我无法在任何地方找到一个好的示例代码....但我发现的信息是矛盾和令人困惑的......
@interface DAORealmMetadata : RLMObject
@property (nonatomic, copy) NSString* id;
@end
RLM_ARRAY_TYPE(DAORealmMetadata)
@interface DAORealmBase : RLMObject
@property (nonatomic, copy) NSString* id;
@property (nonatomic, copy) RLMArray<DAORealmMetadata*><DAORealmMetadata>* metadata;
@end
RLM_ARRAY_TYPE(DAORealmBase)
问题:
我应该在DAORealmBase实施中添加@dynamic metadata
吗?
我已经尝试过,有过相同的最终结果......一次崩溃。
我使用以下代码创建非托管对象:
DAORealmBase* baseObj = [[DAORealmBase alloc] init];
DAORealmMetadata* metadataObj = [[DAORealmMetadata alloc] init];
[baseObj.metadata addObject:metadataObj];
问题: 为什么最后一行导致崩溃/异常?
我只能假设我做错了什么,但我找不到任何具体的事情。
谢谢!
答案 0 :(得分:1)
好吧,我跟踪了问题,并通过一些反复试验确定问题是RLMArray属性的属性属性。
更改
@property (nonatomic, copy) RLMArray<DAORealmMetadata*><DAORealmMetadata>* metadata;
到
@property RLMArray<DAORealmMetadata*><DAORealmMetadata>* metadata;
似乎已经解决了这个问题。我特别相信&#39; copy&#39;属性。
现在,我知道Realm文档说这些属性被忽略而不需要,但是我使用的lint检查器想要它们......并且因为它们被忽略了#34;什么是伤害?
好吧,它们在普通的Realm属性上被忽略,但在RLMArray属性上它们不会被忽略,然后出现问题。
希望这将有助于将来的其他人并节省一些时间。