Ios 直接使用领域对象(即作为CollectionView数据源)
我有一个领域对象类:Ios 直接使用领域对象(即作为CollectionView数据源),ios,swift,initialization,realm,Ios,Swift,Initialization,Realm,我有一个领域对象类: 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
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)
我对你的代码没有什么评论
应该是动态的项目ID
- 最好为
定义一个默认值,而不是将其设置为可选值item\u ID
- 您不应该创建或重写init,而应该仅为方便而创建自定义init
不需要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)
我希望这有帮助。谢谢
更新:
- 动态关键字是什么意思??请看这个
- 为什么我们在realm中使用动态变量?如图所示 领域模型属性需要动态var属性,以便 这些属性将成为基础数据库数据的访问器 这有两个例外:列表和RealmOptional属性 无法声明为动态的,因为无法创建泛型属性 在Objective-C运行时中表示,用于动态 动态属性的分派,并且应始终使用 让我来
- 将领域对象用作数据源是否是一种良好的做法?路途
您正在使用数据源作为示例的代码
是一种很好的方法,因为数组大小不会改变 自动,而对象将自动更新(如果 代码的其他部分正在对其进行修改)Array