我在一个新的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
}
}
Run Code Online (Sandbox Code Playgroud)
我是如何尝试添加/更新新对象的:
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()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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
Tho*_*yne 83
primaryKey
需要是一个类函数,它返回作为主键的属性的名称,而不是返回主键值的实例方法.
class Foo: RLMObject {
dynamic var id = 0
dynamic var title = ""
override class func primaryKey() -> String? {
return "id"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
返回类型primaryKey()
是可选的:
class Foo: RLMObject {
dynamic var id = 0
dynamic var title = ""
override class func primaryKey() -> String? {
return "id"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
对于 Swift 5:
import RealmSwift
class Signature: Object {
@objc dynamic var id = ""
override static func primaryKey() -> String? {
return "id"
}
}
Run Code Online (Sandbox Code Playgroud)
避免:由于未捕获的异常“RLMException”而终止应用程序,原因:对象上不存在“主键属性”“id”。
归档时间: |
|
查看次数: |
26293 次 |
最近记录: |