所以我有这个Realm Object类:
import Realm
import RealmSwift
class Realm_item: Object {
var item_ID : String!
required init() {
super.init()
}
// And this one too
required override init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
// Now go nuts creating your own constructor
init(myCustomValue: String) {
self.item_ID = myCustomValue
super.init()
}
override class func primaryKey() -> String {
return "item_ID"
}
}
我试图初始化它,但它只是卡住了,没有异常或错误/崩溃。
let item = Realm_item(myCustomValue: "SampleString")
self.dataSource.append(item)
答案 0 :(得分:3)
我对您的代码的评论很少。
item_ID
应该是动态的item_ID
定义默认值,而不是将其设为可选import Realm
不需要import RealmSwift
就足够了。代码应如下所示。
import RealmSwift
class Realm_item: Object {
dynamic var item_ID : String = ""
// You should only define init(s) as convenience and call self.init() inside it.
convenience init(myCustomValue: String) {
self.init()
self.item_ID = myCustomValue
}
override class func primaryKey() -> String {
return "item_ID"
}
}
然后就像你一样使用它。
let item = Realm_item(myCustomValue: "SampleString")
self.dataSource.append(item)
我希望这会有所帮助。感谢。
更新:
动态关键字是什么意思?请参阅此Answer
为什么我们将动态变量与领域一起使用?正如Realm Swift Docs
中所说的那样Realm模型属性需要动态var属性 这些属性将成为底层数据库数据的访问者。
这有两个例外:List和RealmOptional属性 不能声明为动态,因为通用属性不能 在Objective-C运行时中表示,用于动态 调度动态属性,并且应始终声明 让。
将Realm对象用作DataSource是一种好习惯吗?方式
您在代码示例中使用dataSource作为
Array<Realm_Item>
是一种很好的方法,因为数组大小不会改变
自动更新对象(如果
还有其他部分代码修改它)