我正在使用,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'
我错过了什么?
提前感谢您的时间。
答案 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即将发布。