【发布时间】:2016-07-26 12:08:40
【问题描述】:
我有一个像这样的数据模型的聊天应用程序。
User <--> Conversation <-->> Message
我现在的问题:有时,如果我从备份中收到旧消息,我的 DataModel 中有两次消息。我想要一个类似 NSSet 的类,它可以识别 Message-Object 的属性是否具有完全相同的值。我读过,我不能重写方法-hash 和-isEqual:,所以我不知道该怎么做。任何的想法?这是一些代码...
+(void)addMessages:(NSSet<JSQMessage *> *)messages toConversation:(Conversation *)conversation
{
DataManager * dataManager = [DataManager dataManager];
NSMutableSet * storeSet = [NSMutableSet setWithCapacity:messages.count];
for (JSQMessage * jsqMessage in messages) {
Message * message = [NSEntityDescription insertNewObjectForEntityForName:CDEntityNameMessage inManagedObjectContext:[dataManager managedObjectContext]];
message.senderId = jsqMessage.senderId;
message.senderDisplayName = jsqMessage.senderDisplayName;
message.text = jsqMessage.text;
message.date = jsqMessage.date;
[storeSet addObject:message];
}
[conversation addMessages:storeSet];
NSError *error;
if (![[dataManager managedObjectContext] save:&error]) {
NSLog(@"Something went wrong: %@", [error localizedDescription]);
} else {
//Saved successfull
}
}
Conversation -addMessages: 方法是从 Xcode/CoreData 自动生成的
- (void)addMessages:(NSSet<Message *> *)values;
【问题讨论】:
标签: ios objective-c iphone core-data nsset