【问题标题】:Realm fileExists is always true领域 fileExists 始终为真
【发布时间】:2017-04-21 14:39:13
【问题描述】:

我想复制预加载的领域文件,所以我这样做了:

将我的文件复制到名为 default.realm 的项目导航器。然后检查fileExists::

let bundlePath = Bundle.main.path(forResource: "default", ofType: "realm")
let destPath = Realm.Configuration.defaultConfiguration.fileURL?.path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: destPath!) {
    //File exist, do nothing
    print("File exist")
} else {
    do {
        //Copy file from bundle to Realm default path
        try fileManager.copyItem(atPath: bundlePath!, toPath: destPath!)
        print("Copied")
    } catch {
        print("\n",error)
    }
}

而且它总是返回 true,所以我不能复制我的领域文件。

【问题讨论】:

  • 您有代码let realm = try! Realm() 作为视图控制器中的实例变量吗?视图控制器在 didFinishLaunchingWithOptions 之前从 Storyboard 实例化。请确认并将其修改为lazy var realm = try! Realm(),然后从模拟器中删除该应用程序,然后重试。
  • @kishikawakatsumi 非常感谢。所有问题都在let!

标签: swift3 realm


【解决方案1】:

重置内容和设置 (Simulator > Reset Content and Settings...) 后,我在模拟器中运行了您的代码,它似乎按预期执行。

如果您以前在项目中使用过 Realm(即测试),它可能会看到旧的 default.realm 文件。

【讨论】:

  • 我重置了内容和设置,它仍然返回file exists。领域如何以及在何处创建新的default.realm 文件?似乎我在领域创建默认文件后检查文件是否存在。我签到didFinishLaunchingWithOptions。
  • 那么第二个问题是当我几乎没有复制我的领域文件时,let realm = try! Realm() 返回空结果...
猜你喜欢
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 2015-12-05
  • 2019-02-01
  • 2021-01-07
相关资源
最近更新 更多