0

Holidays という名前のエンティティを持つアプリがあります。アプリの数年分の休暇を事前に入力する必要があります。

Holidays エンティティをチェックし、コードを AppDelegate didFinishLaunchingWithOptions メソッドに配置することで実行時にロードできると考えています...すでにレコードが含まれているかどうかを確認して確認し、そうでない場合は追加します。

これを行うより良い方法はありますか?

また、エンティティで単純な fetchrequest を実行してレコードをカウントしようとしましたが (既にロードされているかどうかを確認する方法として)、配列が空であるというエラーが発生し続けました。エラーを出さずにエンティティが空かどうかを確認するにはどうすればよいですか?

これはもちろん死にますが、私が試したのは次のとおりです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    // set up the default data

    //holiday dates
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Holidays" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    NSError *error = nil;
    NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    if (fetchedObjects == nil) {
        NSLog(@"The entity is empty");
    }
    else {

        NSLog(@"The entity is loaded");
    }

    return YES;
}
4

1 に答える 1

1

それは「2 つの質問を 1 つに」なので、2 番目の質問に答えます :-)

executeFetchRequestエラーnilが発生した場合に返します。したがって、チェックは次のようになります。

NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
    // report error
} else if ([fetchedObjects count] == 0) {
    NSLog(@"The entity is empty");
}
else {
    NSLog(@"The entity is loaded");
}

(データベースの事前入力については、コア データを事前に入力する方法はありますか? を参照してください。)

于 2013-11-05T21:01:56.940 に答える