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

问题描述 投票:0回答:2

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

swift core-data
2个回答
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
    }

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

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


0
投票

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

保存并加载。

© www.soinside.com 2019 - 2024. All rights reserved.