使用Core Data将文本从文本字段分配到托管对象上下文
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Core Data将文本从文本字段分配到托管对象上下文相关的知识,希望对你有一定的参考价值。
需要帮助让保存功能工作,我是CoreData的新手,我只是跟随树屋课程,但树屋课程使用的是以前版本的xcode或不同版本的swift,因为当我跟着它时它给了我一个错误。
错误说“类型'项的价值'没有成员'文字'”
class popUpViewController: UIViewController {
let managedObjectContext = CoreDataStack().managedObjectContext
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet var keyField: UITextField!
@IBAction func save(_ sender: Any) {
guard let text = keyField.text, !text.isEmpty else { return }
let item = NSEntityDescription.insertNewObject(forEntityName: "Item", into: managedObjectContext) as! Item
item.text = text
}
}
答案
尝试这样的事情,让我知道它是否有效:
func setValuesToModel(){
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Item", in: context)
let item = NSManagedObject(entity: entity!, insertInto: context)
item.setValue("text You want", forKeyPath: "text")
do {
try context.save()
} catch {
print("Could not save. (error) , (error.localizedDescription)")
}
}
另一答案
您可以创建如下所示的func,只需传递要存储的文本即可。根据您的要求更新密钥和实体名称
func save(text: String) {
// 1 fetching item and updating with text
let item = NSEntityDescription.entity(forEntityName: "Item", in: managedObjectContext)!
item.text = text // if you have created model class use this or user below line
// item.setValue("Sample Text", forKeyPath: "text") //key will be the attribute name you have created
// 2 saving part
do {
//save tour context after setting value
try managedObjectContext.save()
} catch let error as NSError {
print("Could not save. (error), (error.userInfo)")
}
}
以上是关于使用Core Data将文本从文本字段分配到托管对象上下文的主要内容,如果未能解决你的问题,请参考以下文章
Visual C++ 表单、简单消息框和将文本从文本字段分配给字符串时出错
如何在通过 Core Data 保存我的 RestKit 托管对象之前对其进行修改?