【问题标题】:Is the Realm method addOrUpdateObject() callable from Swift?Realm 方法 addOrUpdateObject() 可以从 Swift 调用吗?
【发布时间】:2016-04-20 12:35:33
【问题描述】:

根据文档; https://realm.io/docs/objc/latest/api/Classes/RLMRealm.html方法- (void)addOrUpdateObject:(nonnull RLMObject *)object 可通过 Obj-C 获得

Swift 文档; https://realm.io/docs/swift/latest/api/Classes/Realm.html 没有提到这个方法。 编辑:有,一开始我没有注意到。

在我的 Swift 应用程序中,如果我尝试调用此方法 self.realm!.addOrUpdateObject(model),则会收到编译器错误 Value of type 'Realm' has no member 'addOrUpdateObject'

但我在网上看到其他地方,例如How to properly map JSON properties to model properties in Realm.create 人们显然是从 Swift 中使用它的。

我正在通过 cocoapods 使用 Realm - pod 'RealmSwift' - 这会降低 2 个 pod; Realm 和 RealmSwift。我可以看到在 RLMRealm.mm 中定义的这个方法我尝试将 #import <Realm/Realm.h> 添加到我的桥接头,但没有奏效。

如何从 Swift 中调用这个方法?

【问题讨论】:

  • 你能看到来自 Swift 的RLMObjects 吗?
  • 我可以,是的。问题现在解决了,谢谢。

标签: swift realm


【解决方案1】:

这在 Swift 中可用,并且是 defined as:

public func add(object: Object, update: Bool = false)

因此,要获得与 Obj-C 领域的方法相同的行为,您可以调用它:

self.realm!.add(model, update: true)

【讨论】:

  • 是的,我没有注意到在我给出的链接问题中,他们使用的是RLMRealm.defaultRealm().addOrUpdateObject ,这是一个 RLMRealm,而不是 Realm...
  • 只是在复制 OP 的尝试用法。确实应该以这种方式使用选项。
【解决方案2】:

Realm 有两种添加对象的方法。一个是 addObjects,另一个是 addOrUpdateObjects。 使用 addObjects 方法,我们可以添加没有 primaryKey 的对象。 而 addOrUpdateObjects 必须使用具有主键的对象。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多