Я бы подумал, что это довольно прямолинейно.
Вы можете загрузить изображения, когда вы впервые получили товар.
Так что теперь есть проверочное что-то вроде ...
если currentImageURL отличается от newImageURL загрузки изображения.
EDIT - Для того, чтобы объяснить, как он должен работать
Предполагая, что вы обработали JSON, и теперь у вас есть NSArray
из NSDictionaries
...
Вы бы сделать что-то вроде этого ...
//I'm assuming the object is called "Person"
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
for (NSDictionary *personDictionary in downloadedArray) {
// You need to find if there is already a person with that name
NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"name = %@", personDictionary[@"name"]];
[request setPredicate:namePredicate];
// use whichever NSManagedObjectContext is correct for your app
NSArray *results = [self.moc executeFetchRequest:request error:&error];
Person *person;
if (results.count == 1) {
// person already exists so get it.
person = results[0];
} else {
// person doesn't exist, create it and set the name.
person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.moc];
person.name = personDictionary[@"name"];
}
// check the image URL has changed. If it has then set the new URL and make the image nil.
if (![personDictionary[@"imageURL"] isEqualToString:person.imageURL]
|| !person.imageURL) {
person.imageURL = personDictionary[@"imageURL"];
person.image = nil;
}
// now download the image if necessary.
// I would suggest leaving this here and then wait for the image to be accessed
// by the UI. If the image is then nil you can start the download of it.
// now save the context.
}
Поэтому я должен загружать данные в какие-то временные объекты, затем перебирать их и сравнивать с объектами из fetchResult. Если такой же объект существует, проверьте, имеет ли он другой imageUrl, а если нет, просто добавьте его в MOC? Это не похоже на элегантное решение, не самое быстрое ... –
Ну, вы говорите, что атрибут name уникален. Как вы убедитесь, что это уникально? – Fogmeister
Я знаю, что имя уникально. Вот как я это делаю прямо сейчас. –