Предположим, я загружаю данные из удаленного веб-сервиса.Если быть более точным, я загружаю список новостей из веб-службы, каждая новость имеет идентификатор новостей, который мы можем рассматривать как первичный ключ для службы, поэтому мы не найдем два одинаковых идентификатора новостей.
Как я могубыть уверенным, что я вставляю только те данные с новостным идентификатором, который еще не существует?
Я набросал свое решение с помощью этого метода:
- (BOOL)validateNewsID:(NSNumber **)newsID error:(NSError **)error
{
NSError *countError = nil;
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[self entity]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"newsID == %@", *newsID];
[fetchRequest setPredicate:predicate];
NSUInteger resultCount = [SharedManagedObjectContext countForFetchRequest:fetchRequest error:&countError];
if (countError) {
OLog(countError);
*error = countError;
return NO;
}
if (resultCount > 0) {
NSString *errorString = @"NewsID should be unique";
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorString
forKey:NSLocalizedDescriptionKey];
NSError *uniquenessError = [[[NSError alloc] initWithDomain:kNewsValidationDomain
code:kNewsValidationUniquenessCode
userInfo:userInfoDict] autorelease];
*error = uniquenessError;
return NO;
}
return YES;
}
, но не работает, как ожидаетсяпотому что, я полагаю, когда я выполняю запрос на выборку, я нахожу тот же объект, ранее вставленный в контекст.Я не прав?
Как мне это исправить?