【问题标题】:Why Realm Object does not conform CVarArgType?为什么 Realm Object 不符合 CVarArgType?
【发布时间】:2015-12-17 16:58:09
【问题描述】:

我正在尝试按父项查询子对象。所以我有以下结构:

class A : Object {

}

class B : Object {
    dynamic var parent: A?
}

这是无法编译的查询代码:

let parent = A()
let predicate = NSPredicate(format: "parent == %@", parent)
let results = realm.objects(B).filter(predicate)

因为 A 类不符合 CVarArgType。由于官方文档建议使用NSPredicate,我很好奇为什么它是这样设计的,我不能使用这样的谓词?

我使用 Xcode 7.2 和 Realm v0.96.2。

更新 #1

以下代码可以正常工作:

let parent = A()
let results = realm.objects(B).filter("parent == %@", parent)

所以问题只在于NSPredicate

【问题讨论】:

  • 您在此处发布的两个代码 sn-ps 都应该可以工作。你使用哪个版本的 Xcode/Swift?
  • @marius 我用这些信息更新了我的问题。 Xcode 7.2 和 Realm v0.96.2。

标签: swift nspredicate realm


【解决方案1】:

事实证明,用户定义的类型不容易符合CVarArgType,即使它们是NSObject 的后代。

作为一种解决方法,您可以坚持使用RealmCollectionType.filter 或使用NSPredicate(format:_argumentArray:_)

【讨论】:

  • 你是对的。我创建了issue #3039 来跟踪它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
相关资源
最近更新 更多