【问题标题】:Query Realm for all objects based on the size of a RLMArray property?根据 RLMArray 属性的大小查询所有对象的领域?
【发布时间】:2015-03-06 02:26:06
【问题描述】:

我们正在尝试编写一个 Realm 查询来检索 RLMArray 属性大小为特定数字的所有对象。 Realm 模型如下所示:

class Foo: RLMObject {
    dynamic var people = RLMArray(objectClassName: User.className())
}

并且我们尝试过多次迭代的查询都没有成功如下:

// 'Invalid predicate expressions', reason: 'Predicate expressions must compare a keypath and another keypath or a constant value'
let results = Foo.objectsWhere("people[SIZE] = %d", 2)

// 'Invalid predicate', reason: 'RLMArray predicates must contain the ANY modifier'
let results = Foo.objectsWhere("people.@count = %d", 2)

// 'Invalid column name', reason: 'Column name @count not found in table'
let results = Foo.objectsWhere("ANY people.@count = %d", 2)

我们查看了多个示例、Apple 的 NSPredicate 文档和其他 SO 答案,但我们似乎无法找到答案。我们如何根据 RLMArray 属性的大小查询所有对象?

【问题讨论】:

    标签: ios swift nspredicate realm


    【解决方案1】:

    在 0.96 版发布之前,这是 Realm 的 limitation。此后Keypath Collection Queries 得到支持。

    【讨论】:

    • 无赖...谢谢...没看到那个帖子——几天前才发的
    • 是否有计划在新版本中支持此功能?
    • Version 0.96 对此提供了支持。
    • 我有 0.97 v。但它似乎仍然不起作用。 NSPredicate(format: "SUBQUERY(searchQueries, $query, $query.location == %@).@count > 0", argumentArray: ["London"])。这引发了“谓词表达式必须比较一个键路径和另一个键路径或一个常量值”。而且我找不到我做错了什么。
    • @Fawkes,从Realm Objective-C and Swift 0.98.0开始支持子查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多