在我的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是可读/写的,它位于文档目录中......
非常感谢任何帮助!