一尘不染

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

swift

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

我正在尝试使用新的Realm主键功能,以便可以进行操作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


阅读 436

收藏
2020-07-07

共1个答案

一尘不染

primaryKey需要是一个返回主键属性名称的类函数,而不是返回主键值的实例方法。

class Foo: RLMObject {
    dynamic var id = 0
    dynamic var title = ""

    override class func primaryKey() -> String? {
        return "id"
    }
}
2020-07-07