У меня есть чат-приложение с такой моделью данных.
User <--> Conversation <-->> Message
Моя проблема сейчас: иногда, если я получаю старые сообщения из резервной копии, у меня дважды появляются сообщения в моей модели данных. Я хотел бы иметь класс NSSet-Like, который распознает, имеет ли 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;