如何将数据从 iCloud 存储文件迁移到本地存储中的新存储文件?

2023-12-11

I have iCloud在我的应用程序中。我已经删除了iCloud从我的应用程序,但在 ios 6 应用程序崩溃,我收到此消息:

  -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:](1055): 

CoreData: Ubiquity: Error:之前使用 iCloud 集成选项添加到协调器的持久存储必须始终使用选项字典中存在的选项添加到协调器。如果您想在不使用商店的情况下使用iCloud,将数据从iCloud将文件存储到本地存储中的新存储文件。

我该如何解决这个错误?如何将数据从iCloud将文件存储到本地存储中的新存储文件?


是的,我也有这个问题。 我想将 iCloud 商店转变为本地商店


解决方案 1:将 ManagedObjects 逐一移动到 localStore。

但如果你有一个很大的数据库,它就会很慢。

所以我昨天找到了第二个解决方案。


解决方案 2:编辑 iCloud 商店的元数据,

并将其保存到新位置。

删除元数据中的“com.apple.coredata.ubiquity.*”键后, 您将获得一家完全本地化的商店。


这是我的解决方案 2 的代码:

已经设置了一些属性:

@property (nonatomic, strong) NSPersistentStoreCoordinator *coordinator;
@property (nonatomic, strong) NSManagedObjectContext *context;

@property (nonatomic, strong) NSPersistentStore *iCloudStore;
//represent the iCloud store already using 
//(after [coordinator addPersistentStore] you get this NSPersistentStore)

@property (nonatomic, strong) NSURL *iCloudStoreURL;
//represent the iCloud store real location
//(it is the URL you send to the [coordinator addPersistentStore])

@property (nonatomic, strong) NSURL *iCloudStoreLocalVersionURL;
//represent the location of local version store you want to save

以及迁移方法:

-(void)migrateCloudStoreToLocalVersion
{
    if(!self.iCloudStore)
        return;

    // remove previous local version
    [FILE_MANAGER removeItemAtURL:self.iCloudStoreLocalVersionURL
                            error:nil];

    // made a copy from original location to the new location
    [FILE_MANAGER copyItemAtURL:self.iCloudStoreURL
                          toURL:self.iCloudStoreLocalVersionURL
                          error:nil];

    //prepare meta data
    NSDictionary *iCloudMetadata = [self.coordinator metadataForPersistentStore:self.iCloudStore].copy;

    NSMutableDictionary *localVersionMetadata = iCloudMetadata.mutableCopy;
    for(NSString * key in iCloudMetadata){
        if([key hasPrefix:@"com.apple.coredata.ubiquity"]){
            [localVersionMetadata removeObjectForKey:key];
        }
    }

    //modify iCloud store
    [self.coordinator setMetadata:localVersionMetadata forPersistentStore:self.iCloudStore];
    [self.coordinator setURL:self.iCloudStoreLocalVersionURL forPersistentStore:self.iCloudStore];

    //save to the localVersion location
    [self.context save:nil];

    //restore iCloud store
    [self.coordinator setMetadata:iCloudMetadata forPersistentStore:self.iCloudStore];
    [self.coordinator setURL:self.iCloudStoreURL forPersistentStore:self.iCloudStore];
}

然后您可以使用iCloudStoreLocalVersionURL使用本地版本存储。

您可以使用此本地版本存储作为本地存储,不会出现任何错误。

Note:

注意NSStoreUUIDKey在元数据中,

您可以选择将其更换为新商店。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数据从 iCloud 存储文件迁移到本地存储中的新存储文件? 的相关文章

随机推荐

  • 如何在静态库中包含静态库?

    我在两个不同的文件夹中有 2 个静态库 libA and libB libB必须包括libA 我的主要 CMakeLists txt 是 add subdirectory libA add subdirectory libB 我的第一个错误
  • UITableViewCell 分组样式中的方形而不是圆角

    我希望分组的表格视图单元格具有方角 而不是默认的圆角 而且我不仅仅想使用图像来实现这种效果 是否可以 最简单的是 在你的tableView cellForRowAtIndexPath use cell backgroundView UIVi
  • PHP 和 FFMPEG - 执行智能视频转换

    我有一项异常困难的任务要执行 我以为这很容易 但我的所有努力都没有结果 我正在将上传到 php 脚本的视频从各种格式 avi mpg wmv mov 等 转换为单一 flv 格式 转换效果很好 但我遇到的问题是视频的分辨率 这是我当前正在运
  • 覆盖 WPF 模板时,是否必须单独覆盖每个主题的模板?

    我需要更改 WPF ComboBox 模板的一小部分 如果我复制 Luna 主题的现有模板并进行更改 那么最初一切都会正常工作 但如果用户有不同的主题 我的ComboBox保留了它的自定义主题 这显然是基于 Luna 所以看起来不合适 有没
  • 如何使用谓词从核心数据中获取偶数和奇数值

    我想从我的核心数据实体中获取偶数和奇数值 请查看下面的代码并进行更正 因为它会使应用程序崩溃 NSPredicate predicate if leadFilter rank isEqualToString Even predicate N
  • 在 Delphi 中为 MySQL 创建 UDF

    如何使用 Delphi 创建 MySQL 的 UDF 有人有代码模板吗 我希望将代码模板集成到 Delphi 版本 2007 及更高版本 中 因此我需要这些模板在有或没有 Unicode 支持的情况下都可以使用 首先 谷歌透露 文档 论坛主
  • 如何在 JavaScript 中将哈希值转换为单个对象?

    我有一个以下格式的对象数组 var log billkey Name billvalue ABC billkey Department billvalue Computer 我想将其转换为单个对象 例如 var log Name ABC D
  • Rails 3 提交标签 + html_safe

    这行代码有什么问题吗 这实际上产生 显然我的 html safe 调用没有做任何事情 背景 我在用着推特引导程序也字体真棒我本质上是想实现一个带有图标的提交按钮 为了扩展卢卡斯的答案 我需要一个按钮标签而不是输入 这段代码产生了我想要的效果
  • Maven 无法解决本地依赖关系

    我有一个 Maven 项目 其中包含一个带有外部 jar 文件的项目内存储库 我使用 install 命令将 jar 文件安装到项目内存储库中 当我检查存储库时 jar 文件已安装 我还在pom文件中添加了依赖配置 但是当我运行 mvn 编
  • 用 Dotrine 查询语言写“NOT IN”

    我有两张桌子company id and company has wtax company id 我需要获取所有不在其中的公司company has wtax桌子 原始 SQL 应该是这样的 SELECT id FROM company L
  • 如何在字典列表上动态构建分组依据

    我正在尝试对 IEnumerable 执行 groupby 问题是我在编译时不知道我想要对哪些字段进行分组 我已经发现另一个帖子在堆栈上解释了当类已知并且具有属性时如何执行此操作 但就我而言 我正在处理字典 并且键也仅在运行时已知 我的代码
  • Google Maps API:设置回调以添加标记/折线

    我正在尝试向生成的 Google 地图添加一条折线 折线的坐标是使用 jQuery getJSON 函数 从我的 Web 服务器上的 JSON 文件中获取的 但是 我在回调方面遇到了麻烦 我在一个单独的 JavaScript 文件中定义了三
  • UPDATE 查询的 WHERE 子句中的 SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 Mysql 错误 1093 无法在 FROM 子句中指定更新的目标表 将 SELECT 查询放入 UPDATE 查询的 WHERE 子句中时出现错误 我的查询是这样的 UPDATE subschedu
  • 您可以在使用 PHP 或 JavaScript 提交表单失败后重新填充文件输入吗?

    好的 这是场景 向用户呈现包含文件输入的表单 用户提交表单 由于某种原因 表单未通过验证 验证 向用户呈现的表单中突出显示了错误 文件输入现在为空 问题 是否可以使用用户最初选择的文件的路径重新填充文件输入 PHP 解决方案是理想的选择 但
  • 无法获取框架内容,未捕获 DOMException:阻止了原点为“null”的框架访问跨源框架

    我正在尝试使用 javascript 从我的一个框架访问 html 文档 但我得到了Uncaught DOMException Blocked a frame with origin null from accessing a cross
  • 如何使用 jQuery 将类添加到 Body 标记?

    让我澄清我的问题以及我正在寻找的解决方案 我正在使用 wikispaces com 我想使用 jQuery 动态地为每个页面添加一个唯一的主体类 以某种方式获取 URL 然后插入专门应用于该页面的唯一主体类 所以 这是我的维基空间中的示例网
  • 从 MySQL 数据库的所有表中删除所有零日期

    我在 MySQL 中有很多表 其中 dateTime 列中包含零日期0000 00 00 00 00 00 使用某种管理设置 是否可以禁用零日期并用静态值替换所有零1 1 1900 EDIT 我正在从事数据库迁移工作 涉及将 100 多个
  • Silverlight 中的跨域安全错误?

    我正在尝试将 Yahoo Pipes 的提要读入 Silverlight 应用程序 我不断收到 SecurityException 这听起来像是跨域策略问题 但是雅虎管道 如果您通过 Pipes yahooapis 域 则具有跨域策略 所以
  • 为什么我的多维数组初始化不起作用?

    出于某种原因 在 IntelliJ 中 如果这很重要 当我尝试初始化 2D 数组时 只有第一个框会根据我指定的大小进行初始化 IE int grid new int 9 9 当我运行调试器时 它显示我已经创建了一个数组int 9 有谁知道我
  • 如何将数据从 iCloud 存储文件迁移到本地存储中的新存储文件?

    I have iCloud在我的应用程序中 我已经删除了iCloud从我的应用程序 但在 ios 6 应用程序崩溃 我收到此消息 NSPersistentStoreCoordinator addPersistentStoreWithType