我正在使用故事板和一些从Realm获取的viewcontrollers作为默认属性值?因为应用程序在application(_:didFinishLaunchingWithOptions:)
调用之前访问Realm .因此,每次应用程序启动并尝试执行Realm迁移时,基本上都会引发异常.
有没有办法解决这个问题?
此外,由于我们处于开发阶段,并且我们不想在每次更改Realm对象模型时处理迁移,是否有一种方法可以清除Realm文件并在检测到迁移时重新开始需要?我发现在github上报告了一个问题(https://github.com/realm/realm-cocoa/issues/1692),但似乎没有提供解决方案.PS,我正在使用最新的Realm for iOS.
如果您无法控制iOS自动加载故事板的顺序与应用委托方法相比,我的建议是从应用的info.plist文件中删除初始故事板设置,只需手动设置并显示它取而代之的是你的应用代表:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let initialViewController = storyboard.instantiateInitialViewController()
self.window = UIWindow(frame:UIScreen.mainScreen().bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
return true
}
Run Code Online (Sandbox Code Playgroud)
这将允许您明确控制故事板何时加载,让您在初始Realm设置后执行此操作.
如果你在开发过程中经常调整你的模型对象并且不需要处理迁移,那么一种可能的(但稍微有点hacky)方法是简单地Realm()
第一次调用,如果它抛出异常(其中)它将需要执行迁移),捕获异常并使用它来简单地从磁盘中删除Realm文件.
归档时间: |
|
查看次数: |
136 次 |
最近记录: |