1
リモートWebサービスからデータをダウンロードするとします。より正確に言えば、私はWebサービスからニュースのリストをダウンロードし、各ニュースにはNewsIDがあります。私たちはそのサービスの主キーと見なすことができるので、2つの等しいnewsIDは見つかりません。コアデータ属性の一意性
ニュースIDが既に存在しないデータのみを挿入するにはどうすればよいですか?
私はこの方法で私の解決策を立案しました:
- (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として送信していますか? –
パラメータが宣言されているため(NSNumber **)newsID –