我已将我的应用程序配置为使用迁移,例如:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
我现在想做的是创建一个临时构建并在我的设备上进行测试。
通常,我会从iTunes中删除该应用程序,然后删除我设备上的应用程序,再将新版本放入iTunes,然后同步以将新版本复制到我的设备上。
但为了测试迁移,我希望旧数据库留在设备上。我该怎么做?
这很简单-一旦你知道该去哪里找。#在你的AppDelegate中,你设置了NSPersistentStoreCoordinator,你需要添加一些选项来告诉它处理自动迁移:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
然后你需要在xCode:中做
- 选择xcdatamodeld文件
- 选择顶部的编辑器菜单,然后选择添加模型版本
- 现在您的xcdatamodeld文件有两个(modelname.xcdatamodel&modelname2.xcdatamodel)
- 现在modelname.xcdatamodel有了绿色复选标记,这意味着它是当前版本,但我们需要将modelname2.xcdatamodel更改为当前版本
- 选择xcdatamodeld文件,然后选择顶部的View Menu-然后选择Utilities-然后选择Xcode右侧显示的Show file Inspector,然后选择Versioned Core Data Model-have Current(DropDownList)-选择modelname2(您刚刚创建的当前版本有绿色复选标记)
- 现在,当您将此版本安装到具有旧型号的设备上时,它将自动将该型号升级到新型号
保留所有更改的文件,然后一旦准备好部署更新,您将删除所有中间文件,只使用最旧和最新的模型进行部署。反之亦然(步骤4、5、6),适用于最新到旧型号(当前)
不要从iTunes中删除应用程序和设备上的应用程序,然后将新版本右移到iTunes中,然后同步以将新版本复制到设备上。对于新版本,总是保持[Bundle versions string,short]更大,现在它只是用新版本更新旧版本。我已经用Testflight完成了。
更新临时构建的最佳方式是使用名为TestFlight的第三方工具。它允许您远程监控崩溃报告和版本安装,而不需要iTunes。这很好,因为每次使用你的应用程序都会更新应用程序,而不是每次删除它。
如何发布临时构建的更新?