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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在swift中保存核心数据中的值相关的知识,希望对你有一定的参考价值。

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

答案

 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
    }

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

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

另一答案

首先,您添加Core Data,然后转到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”)这个名称需要与你的模型文件名相同。

然后转到View Controller并添加:

let context =(UIApplication.shared.delegate as!AppDelegate).persistentContainer.viewContext let 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)")
    }
}

保存并加载。

以上是关于如何在swift中保存核心数据中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在保存到核心数据之前验证上下文中的值

如何在 swift 2 中将 UITextField 保存到核心数据?

Swift - 如何将输入数据保存到核心数据中?

Swift 中的核心数据:仅在 for 循环中保存最后一个对象

Swift 3 中的 JSON 图像和核心数据 [关闭]

swift ios如何检查核心数据库中的字段