Objective c 查询具有领域的属性的嵌套对象数组

Objective c 查询具有领域的属性的嵌套对象数组,objective-c,realm,Objective C,Realm,我尝试编写一个查询来访问一个等于特定键的对象已有一段时间了,但没有成功。我已经很幸运地浏览了SO&Realm文档 如果我打印出CachedCodes RLMObject的结构,它如下所示: CachedCodes { Codes = Codes { assets = RLMArray<KVString> ( [0] KVString { key = Some Key;// this

我尝试编写一个查询来访问一个等于特定键的对象已有一段时间了,但没有成功。我已经很幸运地浏览了SO&Realm文档

如果我打印出CachedCodes RLMObject的结构,它如下所示:

CachedCodes {
    Codes = Codes {
            assets = RLMArray<KVString> (
                [0] KVString {
                    key = Some Key;// this is what I'd want to query for
                    value = Some Value;
                }
            );
        };
}
这是我的班级结构:

@interface CachedCodes : RLMObject
@property (nonatomic, strong, readonly) Codes *Codes;//readwrite in .m
@end

@interface Codes : RLMObject
@property (nonatomic, strong, readonly) RLMArray<KVString *><KVString> *assets;//readwrite in .m
@end

@interface KVString : RLMObject
@property (nonatomic, strong, readonly) NSString *key;//readwrite in .m
@property (nonatomic, strong, readonly) NSString *value;//readwrite in .m
@end

RLM_ARRAY_TYPE(KVString);
以下是我尝试过的:

[CachedObjects objectsWhere:@code.assets.key=='Some key']

错误:包含数组属性的键路径必须使用聚合操作

[CachedObjects objectsWhere:@Codes.assets.key IN'Some key'

错误:包含数组属性的键路径必须使用聚合操作

[CachedObjects objectsWhere:@ANY Codes.assets.key=='Some key']

错误:没有错误。它不会崩溃,也不会给我带键的对象一些键。相反,它给了我所有的对象


如果有人有任何意见,我将永远感激:

经过反复讨论,这里给出了修改后的解决方案。总之,Realm提供了一种直接获取领域内特定类型的内部嵌套对象的方法,而无需担心到达该领域的确切关键路径

RLMResults<KVString *> *results = [KVString objectsWhere:@"key == 'SomeKey'"];

返回相同的内容:/。包含数组属性的关键路径必须使用聚合操作啊,哎呀,聚合操作意味着任何或全部。更新了代码抱歉,目前无法亲自测试,表示不支持所有测试。但是,ANY不会崩溃,但会返回未筛选的整个列表。如果上述代码不起作用,我将不再发布任何内容,直到我有机会执行一些经过测试的工作代码。可能必须使用谓词子查询命令来挖掘嵌套数组。我成功地使用了以下语法RLMResults*results=[KVString objectsWhere:@key=='SomeKey'];这似乎会要求Realm查找您感兴趣的对象类型,而不必如此严格地担心嵌套结构。当我这样做时,我正确地得到了一个且只有一个值与期望值匹配的对象。要清楚,您希望查询返回一个KVString对象,其key值与所需字符串匹配?是的,这是正确的。