如何在 CoreData 中保存字典数组?

Posted

技术标签:

【中文标题】如何在 CoreData 中保存字典数组?【英文标题】:How can I save array of Dictionary in CoreData? 【发布时间】:2017-03-23 23:52:55 【问题描述】:

如何将数据存储在 CoreData 中?我正在使用它在我的 tableView 单元格中显示它,但是如何从我的数据库中保存和检索?

代码如下:

var arrOfDict = [[String :AnyObject]]()
var dictToSaveNotest = [String :AnyObject]()

class SecondViewController: UIViewController 

   @IBAction func addItem(_ sender: Any)

        dictToSaveNotest.updateValue(notesField.text! as AnyObject, forKey: "notesField")
        arrOfDict.append(dictToSaveNotest)

然后在tableViewCell中查看,我使用了代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellID") as! CustomCell
cell.textView.text = arrOfDict[indexPath.row]["notesField"] as! String!


我在我的addItem 中试过这个

 let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let task = Task(context: context)
        task.notes=notesField.text!

        //save the data to coreData
        (UIApplication.shared.delegate as! AppDelegate).saveContext()

但不确定。

【问题讨论】:

【参考方案1】:

是的,这通常是您保存到 Core Data 的方式。您创建对象的一个​​实例。设置属性,然后保存。您是否收到任何错误?还是您只是想确保您的代码有效?

如果您想验证您的代码是否有效,最好的办法是尝试访问保存的数据。如果您可以看到从数据库中检索到的已保存数据,那么您的代码就可以工作了 :)

为了将您的输入保存为Task 对象,如果您的屏幕上有一个textField 和一个notesField 来接收输入,您可以执行以下操作:

let task = Task(context: context)
task.title = textField.text
task.notes = notesField.text
//save the data to coreData
(UIApplication.shared.delegate as! AppDelegate).saveContext()

【讨论】:

我的代码正在做的是,它像一个大字符串一样保存数据,而不是保存在不同的字典中。我希望我的textField(在我的tableView 中)将数据存储在notesField 的字典数组中 ios 不会智能并为您分离出您的字典 :) 如果您将字典(作为文本)分配给 String 属性,它会将文本保存在一个字段中 :) 您需要浏览字典并提取每个值并将其设置为 Task 对象上的正确属性。我将在我的答案中添加一些伪代码以便更好地解释。 想不通,你能帮忙:) ?gist.github.com/raunakstrikha/cf87d92796412d9f1a5a79d6c0382542 现在看看。一旦我给你答案,我会更新我的答案。 @S.Verma In SecondViewController 您要保存屏幕字段中的哪些值? Task 的结构是什么,以便我知道您正在处理哪些属性?另外,你能和我分享完整的项目代码吗?这样可以更快地回答问题:)

以上是关于如何在 CoreData 中保存字典数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CoreData 中正确添加大型数据集?

结构数组:如何保存在 coredata 中?

在 CoreData 中存储和获取字典数组

在 coredata 中保存实体数组

CoreData:从字典数组插入到SQLite数据库中发生未排序 - 因此无法设置外键

将 NSData 数组保存到 CoreData