如何在 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 中保存字典数组?的主要内容,如果未能解决你的问题,请参考以下文章