1
假設我從遠程Web服務下載數據。更準確地說,我從Web服務下載新聞列表,每個新聞都有一個newsID,我們可以將其視爲服務的主鍵,因此我們不會找到兩個相同的newsID。核心數據屬性唯一性
我怎樣才能確定我只插入了一個尚不存在的newsID的數據?
我已經草擬我用這種方法解決:
- (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;
}
,但確實如預期,因爲,我想,當我執行讀取請求,我發現我的同一個對象之前在上下文中插入不工作。我錯了嗎?
我該如何解決?
你爲什麼要發送一個指針作爲newsID的指針? – 2012-03-05 19:39:05
因爲聲明瞭參數(NSNumber **)newsID – 2012-03-06 08:27:52