レルムスウィフトは新しいキー(ファイル名は同じ)で新しい暗号化レルムファイルを安全に削除して作成する方法はありますか?レルムスウィフトiOS - 暗号化されたレルムを安全に削除して再キーイングする
私のユースケース:
static func deleteRealm() {
let configuration = Realm.Configuration()
let path = NSURL.fileURLWithPath(configuration.path!)
.URLByDeletingLastPathComponent?
.URLByAppendingPathComponent("encrypted.realm")
.path!
if NSFileManager.defaultManager().fileExistsAtPath(path) {
// Delete realm
try! NSFileManager.defaultManager().removeItemAtPath(path)
}
}
}
(残念ながら、realm.deleteAll()
の呼び出しは、十分ではありません:暗号化キーも削除されますので、ユーザがログイン私のアプリのうち、私は、暗号化された.realmファイルを削除新しいキー)
でもありますので、内の別のユーザーがログイン直後にログアウトし、私はこのように、新しいキーで暗号化されたレルムDBを再intializeしようとしたとき:
static func intializeRealm() -> Realm! {
let realmKey = generateSecureRealmKey()
var configuration = Realm.Configuration()
configuration.path = RealmDB.getRealmPath()
configuration.encryptionKey = NSData(bytes: realmKey, length: realmKey.count)
return try! Realm(configuration: configuration)
}
私はこの例外を取得:(ファイル名が同じであるため)
*** Terminating app due to uncaught exception 'RLMException',
reason: 'Realm at path '****/encrypted.realm' already opened
with different encryption key'
レルムファイルが削除されているにもかかわらず、古いconfiguration cache
がまだ使用されているようです。
sample encryption app for Realm Swiftはこれを回避するためにautoreleasepool
を使用していますが、それはもっと大きなアプリでは実現できません。またはそれは?私は領域のすべての用途をautoreleasepool
で囲む必要がありますか?