如何在Swift for Realm模型中设置主键

我在一个新的iOS Swift项目中使用Realm。 我使用iOS SDK 8.0和Realm 0.85.0的Xcode 6.0.1

我正在尝试使用新的Realm主键function,所以我可以做一个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需要是一个类函数,它返回作为主键的属性名称,而不是返回主键值的实例方法。

 class Foo: RLMObject { dynamic var id = 0 dynamic var title = "" override class func primaryKey() -> String? { return "id" } } 

primaryKey()的返回types是可选的:

 class Foo: RLMObject { dynamic var id = 0 dynamic var title = "" override class func primaryKey() -> String? { return "id" } }