リネームしたdefault.realmを読み込み、表示したい
swiftで日記アプリを作っています。
実現したいことは、ローカルデータベースrealmのデータファイル(default.realm)をdropboxにバックアップし、復元することです。
ユーザーがアプリを消してしまい、再ダウンロードした状態でDropboxにログインした際に、Dropboxに保存しておいたdefault.realmをdefaults.realmという名前でダウンロードし、default.realm(未ログイン時のデータ)を1件づつdefaults.realmにコピー。元のdefault.realmを削除し、defaults.realmをdefault.realmにリネームするという形でファイルを復元するところまでを実装しました。
しかし、復元した新しいdefault.realmからデータを取りだしたいのですが、元々のdefault.realm(未ログイン時のデータ)からデータを取り出す形になってしまいます。以下がdefaults.realm→default.realmへのリネーム、realmからデータを取り出す部分のコードです。
if NSFileManager.defaultManager().fileExistsAtPath("\(documentDirPath)/\(fileName)") && NSFileManager.defaultManager().fileExistsAtPath("\(documentDirPath)/\(fileNames)"){
try!NSFileManager.defaultManager().removeItemAtPath("\(documentDirPath)/\(fileNames)")
try!NSFileManager.defaultManager().moveItemAtPath("\(documentDirPath)/\(fileName)", toPath: "\(documentDirPath)/\(fileNames)")
}
let realms = try!Realm()
let Photo = realms.objects(Photos)
print("写真1\(Photo)")
for photo in Photo{
let filename = photo.filename
if let client = Dropbox.authorizedClient{
client.files.download(path: "/\(filename)", destination: destination).response({ (response, error) -> Void in
if let metadata = response{
print("download \(metadata)")
}else{
print(error)
}
})
}
}
一度アプリを閉じてからビルドすると復元した新しいdefault.realmが反映されます。
どうすれば、realmファイルのコピー、リネームが完了した流れで、新しいファイルを反映することができるのでしょうか。よろしくお願いします。