在Realm.io中使用关键字:CONTAINS,BEGINSWITH,ENDSWITH对多级键路径

时间:2014-10-15 17:03:04

标签: ios objective-c realm

我正在使用,realm.io框架的0.86.3版本。

这是我的对象的样子:

RLMArray <0x7fd1f3642a50> (
[0] Product {
    identifier = 4;
    overview = test;
    desc = test;
    reference = AB-123;
    category = Category {
        identifier = 2;
        name = Telescopic Arm;
        level = 1-1;
        parent = Category {
            identifier = 1;
            name = Arm;
            level = 1;
            parent = (null);
        };
    };
}
)

到目前为止,一切看起来都很好,但是当我试图要求时:

RLMArray *products = [GEProduct objectsWhere:@"category.name contains 'telescopic'"];

我得到了:

uncaught exception 'Invalid type', reason: 'Predicate 'CONTAINS' is not supported'

我错过了什么?

提前感谢您的时间。

1 个答案:

答案 0 :(得分:4)

您正在获得该异常,因为不支持CONTAINS,BEGINSWITH,ENDSWITH等多级键路径查询以及多级键路径上的不区分大小写的查询。我们正在研究这项功能,但暂时还没有。

直接属性查询支持这些关键字 ,因此您可以将查询重新设置为如下所示:

RLMArray *categories = [GECategory objectsWhere:@"name contains 'telescopic'"];
RLMArray *products = [GEProduct objectsWhere:@"category IN %@", categories];

我知道它并不优雅,但在我们支持更复杂的多级密钥路径查询之前,这应该可行。

更新(10-27-2014)

从Realm v0.88.0开始,支持不区分大小写,CONTAINS,BEGINSWITH,ENDSWITH等多级密钥路径查询,以便海报的原始尝试现在有效:

[GEProduct objectsWhere:@"category.name contains 'telescopic'"];

Realm v0.88.0即将发布。