【问题标题】:How to migrate Realm object that hasn't been stored?如何迁移尚未存储的 Realm 对象?
【发布时间】:2015-06-17 15:16:30
【问题描述】:

我有一个对象(还没有)存储在任何地方。即使没有为其创建领域,应用程序也会崩溃,说此对象在我修改后需要迁移。

我已经试过了(方法func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool):

RLMRealm.setSchemaVersion(1, forRealmAtPath: RLMRealm.defaultRealmPath()) { (migration: RLMMigration!, oldSchemaVersion: UInt) -> Void in
    if oldSchemaVersion < 1 {
        // not needed, nothing stored...
    }
}
RLMRealm.defaultRealm()

日志:

*** Terminating app due to uncaught exception 'RLMException', reason: 'Migration is required for object type 'PYDRealmChange' due to the following errors:
- Property 'relativePath' is missing from latest object model.
- Property 'source' has been added to latest object model.
- Property 'target' has been added to latest object model.'

这是我在文档中找到的。它没有帮助,应用程序仍然崩溃。我的猜测是我需要 actual 领域来执行迁移。所以我的问题是 - 如果没有,我该如何迁移?

【问题讨论】:

  • 您确定在第一次访问 Realm 之前设置了架构版本吗?您还可以分享您看到的异常消息吗?谢谢!
  • 我添加了日志。我不确定我是否设置它之前。我只是按照文档告诉我将该迁移代码放入我的AppDelegate...
  • 但也没有可访问的领域,我什至从未为该对象创建领域,我创建了一个对象,但从未将其存储在任何地方。
  • 您是否使用情节提要,并在根视图控制器的默认属性值中从领域获取?因为这将在调用application(_:didFinishLaunchingWithOptions:) 之前访问领域。
  • 是的,我正在使用 Storyboard,但不,我没有在那里访问它。我在viewDidLoad() 访问它

标签: ios swift migration realm


【解决方案1】:

所以问题解决了

我不知道的是,我猜模型对象设置在应用程序中存在的所有领域中,无论我是否将其存储在其中。解决方案是为我的应用程序中的所有领域对象复制/粘贴代码RLMRealm.setSchemaVersion...。然后它开始工作了。

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多