在Core Data商店之间切换会破坏iPad上的应用程序

时间:2014-01-17 00:34:49

标签: ios ipad core-data magicalrecord

在我的iOS应用程序中,我使用两个不同的Core Data存储(内部和外部DB)。在模拟器上一切正常,但是当我在iPad上测试时,我遇到了崩溃。我想出了如何避免崩溃,但我不明白它是如何工作的。我正在使用Magical Record作为我的核心数据堆栈。

所以,在我的第一个代码版本中,DBs是在不同的类中创建和初始化的,我正在使用:

 [NSManagedObjectContext MR_contextWithStoreCoordinator:self.psc]; 

在与DB交谈之前选择合适的协调员。它在模拟器上工作正常,但在设备上无效。

然后,我转到:

 [NSManagedObjectContext MR_contextForCurrentThread]; 

它给了我错误,我没有使用正确的商店来获取。

然后,我将所有数据库的初始化和创建移动到同一个类:

 NSPersistentStoreCoordinator *psc = [self databaseSetup];
 externalDB = [[HSDBManipulations alloc] initWithFileName:@"hData.hso" andPSC:psc]; 


 NSPersistentStoreCoordinator *psc2 = [self internalDBSetup];
 internalDB = [[HSInternalDB alloc] initWithFileName:@"internalDB" andPSC:psc2];

这很好用!!!

但是,当我像这样切换DB创作的顺序时:

 NSPersistentStoreCoordinator *psc2 = [self internalDBSetup];
 internalDB = [[HSInternalDB alloc] initWithFileName:@"internalDB" andPSC:psc2];

 NSPersistentStoreCoordinator *psc = [self databaseSetup];
 externalDB = [[HSDBManipulations alloc] initWithFileName:@"hData.hso" andPSC:psc]; 

它再次停止在设备上工作,抱怨访问了错误的商店。

externalDB是只读数据库,它位于应用程序包中,internalDB是可读/写的,它位于文档目录中......

非常感谢任何帮助!

0 个答案:

没有答案