gpt4 book ai didi

ios - 直接使用 Realm 对象(即作为 CollectionView 数据源)

转载 作者:可可西里 更新时间:2023-11-01 01:02:30 25 4
gpt4 key购买 nike

所以我有这个 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) {
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)

最佳答案

我对您的代码几乎没有意见。

  • item_ID应该是动态的
  • 最好为 item_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)

希望对您有所帮助。谢谢。

更新:

  • 动态关键字是什么意思??请看这个Answer

  • 为什么我们对 Realm 使用动态变量?如 RealmSwift Docs 中所述

    Realm model properties need the dynamic var attribute in order for these properties to become accessors for the underlying database data.

    There are two exceptions to this: List and RealmOptional properties cannot be declared as dynamic because generic properties cannot be represented in the Objective-C runtime, which is used for dynamic dispatch of dynamic properties, and should always be declared with let.

  • 使用 Realm 对象作为数据源是一种好的做法吗?道路您在代码示例中使用的数据源为 Array<Realm_Item>是一个好方法,因为数组大小不会改变自动而对象将自动更新(如果还有代码的其他部分修改它)

关于ios - 直接使用 Realm 对象(即作为 CollectionView 数据源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com