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