我必须在使用地址簿收到的联系人上应用复选标记。当我选择联系人时,会出现复选标记,但滚动后它会消失。其次,我必须将这些选定的联系人保存到核心数据中。看看它,告诉我我做错了什么。我用核心数据做了什么错。
class LogItem: NSManagedObject {
@NSManaged var section: String
@NSManaged var keys: String
}
现在像这样声明这个类的对象:
let newItem = NSEntityDescription.insertNewObjectForEntityForName("LogItem", inManagedObjectContext: self.managedObjectContext!) as! LogItem
newItem.section = "section Title"
newItem.keys = "keys text"
}
您可以按如下方式获取数据:
// request using the LogItem entity
let fetchRequest = NSFetchRequest(entityName: "LogItem")
// Execute the fetch request, and cast the results to an array of LogItem objects
if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [LogItem] {
println(fetchResults[0].section) // prints "section title"
println(fetchResults[0].key) // prints key text
}
请确保核心数据只能保存属性。
根据苹果文档,"核心数据框架提供 与以下相关常见任务的通用和自动化解决方案 对象生命周期和对象图管理,包括持久性。
首先,添加 CoreData,然后转到 AppDelegate,您将看到以下代码:
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Model_data")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error (error), (error.userInfo)")
}
})
return container
}()
在:让容器。 。 。您会看到(名称:"Model_data")此名称必须与模型文件名相同。
然后转到视图控制器并添加:
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newItem = Item(context: self.context)
项是模型对象中的实体。
将 newItem 添加到数组中,例如:
self.itemArray.append(newItem)
然后,添加下一个逻辑:
fileprivate func saveContext() {
do {
try context.save()
// if it is table view, you need to reload here. tableView.reloadData()
} catch {
print("Failed to with error: (error)")
}
}
如果加载有问题,请添加以下逻辑:
fileprivate func loadContext() {
let request: NSFetchRequest<Item> = Item.fetchRequest()
do {
itemModel = try context.fetch(request)
} catch {
print("Error in request: (error)")
}
}
保存并加载。