我有一个名为" Entry"。
的课程在那里我有不同的变量,如Int,NSDate和Float。
我有一个数组" listData"由这些元素组成。
这个" listData"填写TableView。如何存储和读取此数组?实现如何?
我试图遍历数组并保存" Entry"的单个元素。在加载时将它重新组合在一起的类。它似乎无法正常工作。
以下是我的一些代码:
我的入门级:
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))
我在代码中拥有的其他所有内容只是设置和管理Tableviews。
有没有办法使用UserDefaults?或者我必须使用CoreData吗?
希望你能帮忙! 干杯,尼克拉斯答案 0 :(得分:1)
如果您不想使用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)
}