我在一个新的iOS Swift项目中使用Realm。我将Xcode 6.0.1与iOS SDK 8.0和Realm 0.85.0一起使用
我正在尝试使用新的Realm主键功能,以便可以进行操作addOrUpdateObject。
addOrUpdateObject
这是一个示例模型:
import Foundation import Realm class Foo: RLMObject { dynamic var id = 0 dynamic var title = "" func primaryKey() -> Int { return id } }
以及我如何尝试添加/更新新对象:
let foo = Foo() foo.title = titleField.text foo.id = 1 // Get the default Realm let realm = RLMRealm.defaultRealm() // Add to the Realm inside a transaction realm.beginWriteTransaction() realm.addOrUpdateObject(foo) realm.commitWriteTransaction()
我收到此错误:
RLMExecption’,原因:“ Foo”没有主键,无法更新
这是主键上的文档。我可能没有正确设置它: http : //realm.io/docs/cocoa/0.85.0/api/Classes/RLMObject.html#//api/name/primaryKey
最新的文档现在在这里:https : //realm.io/docs/objc/latest/api/Classes/RLMObject.html#//api/name/primaryKey
primaryKey需要是一个返回主键属性名称的类函数,而不是返回主键值的实例方法。
primaryKey
class Foo: RLMObject { dynamic var id = 0 dynamic var title = "" override class func primaryKey() -> String? { return "id" } }