2017-04-21 7 views
0

である私は、プリロードレルムファイルをコピーしたいので、私は実行します。レルムFILEEXISTS常に真

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を返しますので、私は私のレルムファイルをコピーすることはできません。

+1

コードがありますか?let realm = try! Realm() 'をビューコントローラのインスタンス変数として使用しますか? Viewコントローラは、 'didFinishLaunchingWithOptions'の前にストーリーボードからインスタンス化されます。これを確認し、 'lazy var realm = try! 'に変更してください! Realm() 'を実行してから、シミュレータからアプリを削除してから再度試してください。 –

+0

@kishikawakatsumiありがとうございました。すべての問題は 'let 'にあった! – aaisataev

答えて

2

内容と設定(Simulator > Reset Content and Settings...)をリセットした後、シミュレータでコードを実行しましたが、意図した通りに実行されたようです。

以前にプロジェクトでRealmを使用していた場合(テスト中)、古いdefault.realmファイルが表示されている可能性があります。

+0

内容と設定をリセットしても 'file exists'が返されます。 realmが新しい 'default.realm'ファイルを作成する方法と場所レルムがデフォルトファイルを作成した後にファイルが存在するかどうかを確認しているようです。私は 'didFinishLaunchingWithOptions'をチェックインします。 – aaisataev

+0

次に、私のレルムファイルをほとんどコピーしなかったとき、 'letm = try! Realm() 'は空の結果を返します... – aaisataev