我发现了几个与此类似的问题,但没有一个完全符合我的需求。我已经在Swift中开发了一个简单的数字化应用程序,它可以呈现图像,并允许我使用模拟器对图像中的特定点进行数字化。
我使用Core data来保存数据。一个实体(“Coursemap”)具有图像(二进制数据)和一些元数据(字符串)的属性。Coursemap实体与“Points”实体具有一对多关系。Points实体定义图像中特定点的x/y坐标的属性。数字化应用运行良好;我可以使用Core Data数字化和保存几张图像。在我的应用程序的最终版本中,我可能需要大约50-60张数字化的图像。
我想做的是使用我的数字化仪应用程序输出的数据作为我正在开发的iPad游戏的输入。所以我基本上想把我的数字化项目中创建的核心数据文件复制到我的游戏项目中,这样我的游戏应用程序就可以使用数字化的图像了。有没有办法做到这一点?核心数据是处理这个问题的最佳方式吗?
到目前为止我尝试过的:我将这两个项目命名为相同的名称,但将它们放在不同的文件夹中,例如:
~/digitizer/myApp and ~/games/myApp.
在以下文件夹中创建数字化仪核心数据文件:
~/Library/Developer/CoreSimulator/Devices/…/Documents.
当我运行游戏应用程序时,它似乎期望核心数据文件位于同一目录中(这就是为什么我将这两个项目命名为相同的名称)。当游戏应用程序尝试获取数据时,我收到错误消息,“用于打开商店的模型与用于创建商店的模型不兼容”。我仔细检查了数据模型,它们是相同的。
对此有什么想法吗?谢谢。
发布于 2014-11-22 06:21:47
我意识到了类似的事情:-从模拟器文件夹中选择预先填充的sqlite文件-将其复制到其他项目-在运行时,检查其他项目是否存在sqlite结构,如果不存在,则将sqlite文件从捆绑包复制到documents文件夹:
if(![[NSFileManager defaultManager]fileExistsAtPath:coreDataDatabase.path])
{
url = coreDataDatabase;
[[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:NULL];
url = [url URLByAppendingPathComponent:@"StoreContent"];
[[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:NULL];
url = [url URLByAppendingPathComponent:@"persistentStore"];
// copy the sqlite file to /Documents/<YourApp>/StoreContent/persistentStore
NSArray *stringParts = [kCoreDataPreloadedDatabase componentsSeparatedByString:@"."];
NSString *sqlitePath = [[NSBundle mainBundle]
pathForResource:[stringParts objectAtIndex:0] ofType:@"sqlite"];
NSError *anyError = nil;
BOOL success = [[NSFileManager defaultManager]
copyItemAtPath:sqlitePath toPath:[url path] error:&anyError];
if(!success)
{
Error(@"Unable to copy sqlite file: %@", anyError);
}
}
https://stackoverflow.com/questions/27071232
复制相似问题