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
    是一种很好的方法,因为数组大小不会改变 自动,而对象将自动更新(如果 代码的其他部分正在对其进行修改)


这些附加的初始化器是什么?请尝试删除它们,并且项目ID需要声明为dynamic varThank you@Shripada,Ismail在上面给了我详细的回答:)谢谢Ismail!太棒了:)。你能解释一下动态var是什么意思吗?而且,使用领域对象作为数据源是一种好的做法吗?嗨@roimulia,很高兴我的回答对您有所帮助。请查看我关于您的问题的最新答案。谢谢您伊斯梅尔!非常有用!非常感谢:)