ティダン、
オブジェクトが既に存在するかどうかを確認する必要がある場合は、フェッチ リクエストを設定し、特定の述語を使用する必要があります。あなたの場合、単純にフェッチして、すでにVille
持っているかどうかを確認できます 。の識別子のようなものidV
だと思います。をチェックすると同じかもしれませんが、世界の 2 つの異なる場所に同じ名前の 2 つが存在する可能性があります。idV
Ville
nom
cities
@alpzソリューションは大丈夫です。さらに、フェス制限を 1 に設定することもできます。
[request setFetchLimit:1];
それ以外の場合は、単に行うことができます
NSUInteger count = [context countForFetchRequest:request error:&error];
if(count == 0) {
// add the new city here
}
それ以外の
NSArray *results = [context executeFetchRequest:request error:nil];
@Phillip MillsNSManagedObject
は、Key Value Coding アクセスを使用する代わりにサブクラスを使用できると言っています。単純な文字列キーではなく、クラスのプロパティを操作する方が簡単だと思います。
したがって、Ville
サブクラス ( organising-core-data-for-ios ) を作成したら、 という名前のカテゴリをVille+Extension
作成し、次のようなメソッドを作成するだけです。
+ (Ville *)villeWithUniqueName:(NSString *)name withManagedObjectContext:(NSManagedObjectContext*)context
{
NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Ville" inManagedObjectContext:context]];
[request setPredicate:[NSPredicate predicateWithFormat:@"nom = %@", name];
[request setFetchLimit:1];
NSArray *results = [context executeFetchRequest:request error:nil];
Ville* theVille = nil;
if ([results count] == 0)
{
theVille = // create the new here
}
else
{
theVille = (Ville*)[results objectAtIndex:0];
}
[request release]; // if you don't use ARC
return theVille;
}
次に、そのカテゴリを (インポート後に) 次のように使用します。
Ville* theVille = [Ville villeWithUniqueName:@"yourName" withManagedObjectContext:yourContext];
それが役立つことを願っています。