首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >轻量迁移

轻量迁移
EN

Stack Overflow用户
提问于 2013-04-09 22:08:00
回答 1查看 117关注 0票数 0

在建立基于文档的应用程序方面,我一直在遵循Marcus Zarra的指南。到目前为止,它一直进行得很好,但是我正在尝试实现核心数据轻量级迁移,而且我似乎遇到了一个障碍。模型的旧版本和新版本之间唯一的区别是其中一个实体的NSString属性。

在NSDocument中,我添加了以下代码:

代码语言:javascript
运行
复制
    - (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error
    {
        NSMutableDictionary *newStoreOptions;
        if (storeOptions == nil) {
            newStoreOptions = [NSMutableDictionary dictionary];
        }
        else {
            newStoreOptions = [storeOptions mutableCopy];
        }
        [newStoreOptions setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
        [newStoreOptions setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption];

        BOOL result = [super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newStoreOptions error:error];
        NSLog(@"base url:%@ model:%@", [url baseURL], [self managedObjectModel]);
        return result;
  }

为了查看发生了什么,我输出了从

代码语言:javascript
运行
复制
[super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newStoreOptions error:error];

这就是我从Xcode那里得到的:

代码语言:javascript
运行
复制
  NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=512 \"The file couldn\U2019t be saved.\" UserInfo=0x104521930 {NSUnderlyingException=Error validating url for store}";
reason = "Can't add destination store";

我看过几篇文章,引用了一些用户试图同时读/写的时候出现了这个问题,但我不认为我属于这个类别。

而且,我不知道这是否有区别,但我设置了我的应用程序有两个上下文。一个是写入persistentStore的根上下文,另一个是子上下文,它是UI中所有操作发生的地方。根上下文设置为子上下文的父上下文。

谢谢!

Update愚蠢我.我认为我有一个部分解决方案,但不确定这将如何在用户计算机上工作。因此,如果我取消选中汇总选项卡中的“启用应用程序沙箱”,一切似乎都正常。虽然这对我有用,但当我将它提交到时,我将不得不打开它,并且不确定这将如何影响用户。

EN

回答 1

Stack Overflow用户

发布于 2013-04-10 05:12:38

检查configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error的文档,特别是NSError **参数。您应该传递一个NSError *的地址,在您的情况下是&error (假设您已经在某个地方用省略的代码定义了NSError *error )。但是&error的价值在成功的时候还没有定义。使用类似的东西

代码语言:javascript
运行
复制
if (!result) {
    NSLog(@"%@", error.localizedFailureReason);
    // fix it
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15913472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档