是否可以处理使用NSFileManager的UIManagedDocument创建的Core Data数据库?

时间:2012-09-03 05:02:07

标签: ios database core-data uimanageddocument

我正在创建一个使用核心数据的应用,为了我的应用,我需要将预先填充的数据库与应用包捆绑在一起。< / p>

我正在使用UIManagedDocument

为此,我使用应用程序创建了数据库,然后加载了数据。然后我搜索了我的Mac中的iOS模拟器文件夹,并将persistentStore文件拖放到应用程序包中。

稍后在代码中我将其复制到NSDocumentDirectory,因为将允许用户在运行时编辑数据库。这是通过以下方法完成的:

if(![[NSFileManager defaultManager] fileExistsAtPath:[self.appDatabase.fileURL path]])
{        
    // COPY FROM BUNDLE

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *DB = [[paths lastObject] stringByAppendingPathComponent:@"Default App Database"];
    DB = [DB stringByAppendingPathComponent:@"StoreContent"];

    [fileManager createDirectoryAtPath:DB withIntermediateDirectories:YES attributes:nil error:&error];

    NSLog(@"create directory error: %@",error);

    DB = [DB stringByAppendingPathComponent:@"persistentStore"];

    NSString *shippedDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"persistentStore"];
    NSLog(@"%d",[fileManager fileExistsAtPath:shippedDB]);
    [fileManager copyItemAtPath:shippedDB toPath:DB error:&error];

    NSLog(@"Copy error %@",error);
}

一切都很完美!但是,我不确定这是否会产生某种类型的错误。所以我的问题,可以处理使用带有NSFileManager的UIManagedDocument创建的Core Data数据库吗?

而且, Apple会在审核过程中抱怨捆绑persistentStore文件吗?

1 个答案:

答案 0 :(得分:0)

“核心数据编程指南”中明确提到了将默认持久存储与应用程序捆绑在一起:

  

如何使用默认数据初始化商店?

     

...

     

您可以创建包含默认值的单独持久性存储   数据并将商店包含为应用程序资源。当你想要的时候   要使用它,您必须将整个商店复制到合适的商店   位置,或将对象从默认存储区复制到现有存储区   存储。