我正在使用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'


我想念什么?

在此先感谢您的时间。

最佳答案

之所以会出现这种异常,是因为不支持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即将发布。

关于ios - 在Realm.io中的多级键路径上使用关键字CONTAINS,BEGINSWITH和ENDSWITH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26388071/

10-09 00:17