我有一个现有的应用程序(可在 appStore 中获得),我想从头开始重新启动,并将其作为更新。所以我开始了一个新项目,并像在旧项目中一样复制所有内容(名称、bundleId、xcdatamodel 等)。
我想测试用新应用程序更新旧应用程序时数据是否保存完好,但是当我构建它时,我从 xcode “应用程序权限被拒绝”中收到此错误。
我读到这个错误是由于我尝试安装一个与设备上已经存在的相同 bundleId 的应用程序。我不明白,因为我正在尝试模拟更新。
我该怎么做才能让它工作?
我有一个现有的应用程序(可在 appStore 中获得),我想从头开始重新启动,并将其作为更新。所以我开始了一个新项目,并像在旧项目中一样复制所有内容(名称、bundleId、xcdatamodel 等)。
我想测试用新应用程序更新旧应用程序时数据是否保存完好,但是当我构建它时,我从 xcode “应用程序权限被拒绝”中收到此错误。
我读到这个错误是由于我尝试安装一个与设备上已经存在的相同 bundleId 的应用程序。我不明白,因为我正在尝试模拟更新。
我该怎么做才能让它工作?
好的,这是对我有帮助的解决方案。
-(NSPersistentStoreCoordinator *)storeCoorditator{
if(storeCoorditator){
return storeCoorditator;
}
storeCoorditator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self objectModel]];
NSError *lc_error = nil;
NSString *lc_path = [NSString stringWithFormat:@"%@/data.sqlite",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];
NSURL *storeUrl = [NSURL fileURLWithPath:lc_path];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
[storeCoorditator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&lc_error];
return storeCoorditator;
}
这是我尝试使用的方法:
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeUrl = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"PDF.sqlite"];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
由于 storeUrl 不一样,因此无法找到数据;)现在一切都很好,我可以取回我的数据了!