我有一个名为 JVTRoom 的模型 它代表一个会话室,其主键是 roomId
@interface JVTRoom : RLMObject
@property NSString* roomId; // PK
@property JVTInteraction *recentInteraction;
还有一个名为 JVTInteraction 的模型,它代表了房间内的交互。 每次互动都有一个名为 roomId 的属性,因此您可以引用该房间进行互动。
服务器最近添加到房间模型, recentInteraction :
@interface JVTRoom : RLMObject
@property NSString* roomId;
@property JVTInteraction *recentInteraction;
现在,当我添加了此属性后,当我使用Realm调用 addOrUpdateObjectsFromArray 时,房间值不再保存。
仅更新互动。 当我从房间中删除交互属性时,所有值都保存为已删除。
这是我进行交易的方式:
[[RLMRealm defaultRealm] beginWriteTransaction];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm addOrUpdateObjectsFromArray:rooms];
[[RLMRealm defaultRealm] commitWriteTransaction];
正如我所看到的,这是一个问题,因为它们都有一个名为roomId的字符串属性,并且它导致了索引的一些问题。
所以我现在的解决方案是将其添加到JVTRoom:
+ (NSArray *)ignoredProperties
{
return @[@"recentInteraction"];
}
忽略 recentInteraction ,它有效。
有没有人遇到这个问题,并设法解决它而不重命名为属性?