【发布时间】:2021-07-22 14:34:41
【问题描述】:
我正在尝试使我的领域对象能够从应用程序中进行编辑。这是我的课:
import Foundation
import RealmSwift
class Category: Object {
@objc dynamic var name: String = ""
let items = List<Item>()
}
这就是我创建该类的实例的方式:
let action = UIAlertAction(title: "Add", style: .default) { action in
let newCategory = Category()
newCategory.name = textField.text!
self.save(category: newCategory)
}
这是我的编辑方法:
func edit(category: Category) {
do {
try realm.write {
realm.add(category, update: .all)
}
}catch {
print("error editing category \(error)")
}
}
这就是我在按下编辑按钮时在 IBAction 中调用我的编辑方法的方式
let saveAction = UIAlertAction(title: "Save Changes", style: .default) { action in
let editedCategory = Category()
editedCategory.name = textField.text!
self.edit(category: editedCategory)
}
我得到的错误是:“由于未捕获的异常'RLMException'而终止应用程序,原因:''Category'没有主键并且无法更新'”
我尝试在我的类别类中添加主键,但仍然没有用。有什么帮助吗?
【问题讨论】:
-
你重写了primaryKey函数吗?关注文档:academy.realm.io/posts/realm-primary-keys-tutorial
-
您能否详细说明一下您是如何在类别类中添加主键的,但它仍然不起作用?请更新您的代码示例并添加主键
-
您不需要主键。在本地领域情况下,它完全是可选的。但是,使用一个是个好主意,如果您编辑对象,那么它允许您 upsert 它们这是您的代码在此处尝试执行的操作
add(category, update: .all)需要一个主键。请查看Read and Write 指南,因为它会解决很多问题。
标签: ios swift xcode realm primary-key