Ios 使用NSFileManager处理UIManagedDocument创建的核心数据数据库可以吗?

Ios 使用NSFileManager处理UIManagedDocument创建的核心数据数据库可以吗?,ios,database,core-data,uimanageddocument,Ios,Database,Core Data,Uimanageddocument,我正在制作一个使用核心数据的应用程序,为了我的应用程序,我需要将预填充的数据库与应用程序包捆绑在一起 我正在使用UIManagedDocument 为此,我用应用程序创建了数据库,然后加载了数据。然后我在Mac中搜索iOS模拟器文件夹,将persistentStore文件拖放到应用程序包中 在后面的代码中,我将其复制到NSDocumentDirectory,因为用户可以在运行时编辑数据库。这是通过以下方法完成的: if(![[NSFileManager defaultManager] fileE

我正在制作一个使用核心数据的应用程序,为了我的应用程序,我需要将预填充的数据库与应用程序包捆绑在一起

我正在使用
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创建的核心数据数据库吗?


而且,苹果会在审查过程中抱怨捆绑
持久存储
文件吗?

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

如何使用默认数据初始化存储

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