【发布时间】:2016-06-22 20:22:57
【问题描述】:
对于我的应用程序的聊天部分,我试图将对话数据保存到设备中,这样用户就不需要在每次打开应用程序时都刷新。
从数据库中获取所有消息后,我循环遍历数组并将它们存储在会话模型消息属性 (RLMArray) 中。
由于每条消息都有一个主键,因此在将其添加到对话消息之前,我还会检查领域以查看该消息是否已经存在。这在我第一次使用该应用程序时工作正常,但如果我再次运行它,我会收到此错误:
'RLMException', reason: 'Can't set primary key property 'serverID' to existing value '1355'.'
这是我将消息添加到领域的代码
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
for (Message *model in messageArray) {
NSLog(@"message model: %@", model);
TERMessage *message = [[TERMessage alloc] initWithMessage:model];
TERMessage *existingObject = [self.model.messages objectsWhere:@"serverID == %@",message.serverID].firstObject;
NSLog(@"existing object: %@", existingObject);
if (existingObject == nil) {
[self.model.messages addObject:message];
} else {
NSLog(@"not being aded");
}
}
[realm commitWriteTransaction];
【问题讨论】:
标签: objective-c realm