gpt4 book ai didi

arrays - Swift 存储自定义对象数组

转载 作者:行者123 更新时间:2023-11-30 10:18:40 26 4
gpt4 key购买 nike

我有一个名为“Entry”的类(class)。

在那里我有不同的变量,如 Int、NSDate 和 Float。

我有一个由这些元素组成的数组“listData”。

这个“listData”正在填充一个TableView。如何存储和读取这个数组?实现会是什么样子?

我尝试遍历数组并保存“Entry”类的单个元素,以便在加载时将其重新组合在一起。它似乎无法正常工作。

这是我的一些代码:

我的入门类(class):

import Foundation

class Entry {

let number : Int
let date : NSDate
let mileage : Int
let trip : Float
let speed : Float
let consumption : Float

init(number: Int, date: NSDate, mileage: Int, trip: Float, speed: Float, consumption: Float) {


self.number = number
self.date = date
self.mileage = mileage
self.trip = trip
self.speed = speed
self.consumption = consumption
}
}

然后我有一个数组的全局变量:

var listData = [Entry]()

在第二个 ViewController 上,我声明了一些变量,它们接受 Textfield 的输入,将它们保存到新的“Entry”对象,然后将其附加到 listData 数组:

listData.append(Entry(number: number_pass, date: date_pass, mileage: mileage_pass, trip: trip_pass, speed: speed_pass, consumption: consumption_pass))

代码中的其他内容只是设置和管理表格 View 。

有没有办法使用 UserDefaults?或者我必须使用 CoreData 吗?

希望能帮到你!干杯,尼克拉斯

最佳答案

如果您不想使用 NSUserDefaults,则可以使用 Core Data。第一个类只是为了让事情变得更容易:

class CoreDataHelper: NSObject {

class func insertManagedObject(className: String, moc: NSManagedObjectContext) ->AnyObject {
let managedObject: NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName(className, inManagedObjectContext: moc) as! NSManagedObject
return managedObject
}

class func fetchEntities(className: String, withPredicate predicate: NSPredicate?, moc: NSManagedObjectContext) -> NSArray {
let request: NSFetchRequest = NSFetchRequest()
let entityDescription: NSEntityDescription = NSEntityDescription.entityForName(className, inManagedObjectContext: moc)!

request.entity = entityDescription

if predicate != nil {
request.predicate = predicate!
}

request.returnsObjectsAsFaults = false

let items: NSArray = moc.executeFetchRequest(request, error: nil)!
return items
}

}

在你的 ViewController 中:

@IBOutlet weak var myTableView: NSTableView!

// Your datastore
private var myArray = [Entry]()

// ManagedObjectContext
lazy var moc: NSManagedObjectContext? = {
let appi = NSApplication.sharedApplication().delegate as! AppDelegate
if let moc = appi.managedObjectContext {
return moc
} else {
return nil
}
}()

func reloadTableView(sender: AnyObject) {
let request = NSFetchRequest(entityName: "Entry")

// Just an example of sort descriptor
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]

var anyerror: NSError?

let fetchedEntries = moc?.executeFetchRequest(request, error: &anyerror)

if fetchedEntries == nil {
println("Error fetching: \(anyerror)")
return
}

myArray = fetchedEntries as! [Entry]

myTableView.reloadData()
}

// Life cycle
override func viewDidLoad() {
super.viewDidLoad()

reloadTableView(self)

}

关于arrays - Swift 存储自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28593147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com