如何在swift中保存核心数据中的值

时间:2015-04-15 17:24:49

标签: swift core-data

我必须对使用地址簿收到的联系人应用复选标记。当我选择联系人时,会出现复选标记但滚动后它会消失。其次,我必须将这些选定的联系人保存到核心数据中。看看那个并告诉我我做错了什么。我对Core Data做错了什么。

2 个答案:

答案 0 :(得分:0)

 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
    }
  

请确保核心数据只能保存属性。

     

根据苹果文档,“核心数据框架提供了   与...相关的常见任务的通用和自动化解决方案   对象生命周期和对象图管理,包括持久性。“

答案 1 :(得分:0)

首先,添加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
}()

在:让container进入。 。 。您会看到(名称:“ Model_data”) 该名称必须与您的模型文件名相同。

然后转到您的View Controller并添加:

  

let context =(UIApplication.shared.delegate as!    AppDelegate).persistentContainer.viewContext    让newItem = Item(context:self.context)

Item是模型对象中的实体。

将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)")
    }
}

保存并加载。