核心数据模型在添加到主项目的捆绑包中。现在我必须将核心数据迁移到更新的模型。我一直在关注这样的例子,所以我想在任何查询或导入发生之前迁移数据库。所以我将代码放入其中,- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
但当时未加载包含核心数据模型的包。拿到捆绑包说它还没有加载。所以我无法开始迁移过程。
我怎样才能强制它加载这个包?
除了主包之外,将核心数据模型放在单独的包中是一种好方法吗?
编辑:
- (NSManagedObjectModel*)objectModel
{
if (_objectModel)
return _objectModel;
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:kDataManagerBundleName ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
NSString *modelPath = [bundle pathForResource:kDataManagerModelName ofType:@"momd"];
_objectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];
return _objectModel;
}
对于迁移部分,它说捆绑尚未加载并为 pathForResource 返回 nil。