【问题标题】:Lightweight migration of existing core data database with iCloud to iOS 7使用 iCloud 将现有核心数据数据库轻量级迁移到 iOS 7
【发布时间】:2023-04-06 06:34:02
【问题描述】:

Core Data & iCloud 上的 WW2013 视频提到,通过在设置持久存储协调器时指定 NSPersistentStoreUbiquitousContentURLKey,可以将使用 iCloud 的 iOS7 之前的核心数据存储迁移到 iOS7 方式。

有没有人遇到过这种情况?使用我的持久存储,我将 SQLLite 数据库放在 .nosync 文件夹中,将日志文件放在不同的子目录中。我尝试将 NSPersistentStoreUbiquitousContentURLKey 设置为指向每一个,我总是让我的整个数据库被覆盖而不是全部迁移。

【问题讨论】:

    标签: ios core-data ios7 icloud


    【解决方案1】:

    我不记得关于迁移到 iOS 7 的任何言论,我记得他们指出要保持与为事务日志指定自定义路径的旧应用程序的兼容性,您可以继续使用 NSPersistentStoreUbiquitousContentURLKey。这个键应该只用于指向日志目录,当你使用它时不会迁移任何东西,Core Data 只使用现有的存储和 iCloud 事务日志。

    要迁移它以使其使用 iOS7 中的新默认值,您需要使用 migratePersistentStore API 使用新文件 URL 和仅 NSPersistentStoreUbiquitousContentNameKey 创建新商店。然后,Core Data 将自动为您创建后备和本地(iCloud 同步)存储和 iCloud 事务日志文件。

    编辑:

    如果其他人在尝试此操作时遇到问题,请尝试将商店设置为使用 JOURNAL 模式而不是新的默认 WAL 模式。在使用 WAL 模式进行某些迁移时似乎存在一些问题。如果有人知道 WAL 模式是否有特定的错误,请在此处添加链接。

    【讨论】:

    • 感谢您的提示。然而,恐怕它并不完全奏效。我创建了一个示例项目。您介意我通过电子邮件将其发送给您,以便您帮助我解决问题吗?
    • 一定要发到 duncan.groenewald@ossh.com.au 我去看看
    • 你有如何调用 migratePersistentStore 的例子吗?
    • 是的 - 这里有一些示例应用程序,它们使用 migratePersistentStore 进行备份并根据用户偏好将工作副本迁移到 iCloud 和从 iCloud 迁移。 ossh.com.au/design-and-technology/software-development/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多