objective-c - 使用 Realm 查询嵌套对象数组的属性
问题描述
一段时间以来,我一直在尝试编写一个查询来访问等于特定键的对象,但没有成功。我已经浏览了 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:@"Codes.assets.key == 'Some key'"];
错误:包含数组属性的键路径必须使用聚合操作。
[CachedObjects objectsWhere:@"Codes.assets.key IN 'Some key'"];
错误:包含数组属性的键路径必须使用聚合操作。
[CachedObjects objectsWhere:@"ANY Codes.assets.key == 'Some key'"];
错误:没有错误。它不会崩溃,也不会给我带有键“Some key”的对象。相反,它给了我所有的对象。
如果有人有任何意见,我将永远感激:)
解决方案
经过反复讨论,这里提出了修改后的解决方案。总而言之,Realm 提供了一种直接在领域内获取特定类型的内部嵌套对象的方法,而不必担心到达那里的确切键路径。
RLMResults<KVString *> *results = [KVString objectsWhere:@"key == 'SomeKey'"];
推荐阅读
- .net - 使用 MSIL 将 Bool 转换为 int
- swift - 按住按钮时在 Swift 中制作平滑的展开动画
- python-3.x - 通过 api (python) 将数据发布到 smartsheets 列时出错
- javascript - 将多个图像合并为一个 pdf 文件并上传到 firebase 存储
- flutter - 在 Flutter iOS 上找不到这里的 SDK
- python - 如何每n秒调用一次函数?
- ruby-on-rails - 错误:尝试解锁被另一个线程锁定的互斥锁>在终端上尝试 rails s 时
- sql - 使用合并时删除某些行
- reactjs - 使用 propTypes 防止 props
- go - 从上下文中检索父内容