ios - 尝试在主从视图中获取和更新特定的核心数据实体
问题描述
我正在尝试获取列表中某个项目的特定实例,但我不记得这样做的最佳方法。这是在主从列表的详细视图中,当文本更改结束时,它会更新主列表中的项目。但是,我似乎无法让它更新正确的项目,我知道它位于我的代码的这一部分:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let context = appDelegate.persistentContainer.viewContext
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "Event")
do {
let test = try context.fetch(fetchRequest)
let objectUpdate = test[0] as! NSManagedObject
objectUpdate.setValue(noteText.text, forKey: "title")
do {
try context.save()
}
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
具体这部分:
let test = try context.fetch(fetchRequest)
let objectUpdate = test[0] as! NSManagedObject
objectUpdate.setValue(noteText.text, forKey: "title")
编辑:
我忘记发布问题了!基本上使用这种当前方法,当我在文本字段中输入完成时(这包含在一个textFieldDidEndEditing
函数中),它会保存,但在主表视图中的最低项目。我希望它更新选择的项目。
由于我试图从 tableview 中获取项目并更新它,所以最好的方法是什么?我假设我需要识别正确的项目,但我不确定最好的方法。
解决方案
我最终修复了它,我调用了 coredata 对象作为变量,然后通过 segue 传递它。然后我需要做的就是做selectedNote?.title = noteText.text
这是完整的完整代码:
var selectedEvent: Event? = nil
@IBAction func textFieldEndEdit(_ sender: Any) {
print("edit end")
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let context = appDelegate.persistentContainer.viewContext
do {
selectedEvent?.title = noteText.text
do {
try context.save()
}
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
推荐阅读
- python - 将值关联到 .txt 文件中的变量 (Python)
- swift - 使用 alamofire 获取项目并快速将其传递给 tableview
- c++ - C ++链表中出现垃圾节点
- c# - 使用 .Net Compact/Windows CE 从线程中的数据设置标签文本
- java - 搜索 Java 数组,在第一个实例后停止
- stream - 返回 Stream trait 对象的 Future
- r - 如何通过 kable 和 kableExtra 在 Rmarkdown LaTex 中打印小于/大于符号?
- android - android - 日历视图,如何更改特定日期的颜色?
- python - 在不同的驱动器上导入多阵列 numpy 扩展模块失败
- android - 改造动态url