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

那是“两个问题合二为一”,所以我要回答第二个问题:-)

executeFetchRequestnil如果发生错误则返回。因此,您的支票应如下所示:

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");
}

(要预填充您的数据库,请查看Any way to pre-populate core data?。

于 2013-11-05T21:01:56.940 回答