【发布时间】:2021-08-11 05:07:20
【问题描述】:
静态函数 realmConfig() -> Realm.Configuration {
var config = Realm.Configuration(schemaVersion: 6, migrationBlock: { (migration, oldSchemaVersion) in
/// Migration block. Useful when you upgrade the schema version.
})
config.fileURL = Bundle.main.url(forResource: "default", withExtension: "realm")!
print(config.fileURL)
let folderPath = config.fileURL!.deletingLastPathComponent().path
let lockPath = Bundle.main.url(forResource: "default.realm", withExtension: "lock")!.path
do {
try FileManager.default.setAttributes([FileAttributeKey.protectionKey: FileProtectionType.none],ofItemAtPath: folderPath)
try FileManager.default.setAttributes([FileAttributeKey.protectionKey: FileProtectionType.none],ofItemAtPath: lockPath)
} catch {
fatalError("Realm initialization failed, Error:\(error)")
}
return config
}
private static func realmInstance() -> Realm {
do {
let newRealm = try Realm(configuration: realmConfig())
return newRealm
} catch {
print(error)
fatalError("Unable to create an instance of Realm")
}
}
}
【问题讨论】:
-
等等,你为什么要打开
.lock文件? -
如果数据被加密,则无法读取文件。
-
这个问题有点不清楚。如果您已将 Realm 添加到您的 App Bundle 中,则无需涉及 Filemanager(如您问题中的代码所示)。此外,您永远不需要对 .lock 文件做任何事情,如果 Realm 是您的应用程序包的一部分,那么无论如何也不会有 .lock 文件。访问捆绑的 Realm 所需要做的就是使用问题
config.fileURL = Bundle.main...中的代码行。有什么我们不明白的吗?你想做什么? -
@aheze 我不想打开所有锁定文件。我正在尝试使用我的捆绑包中的特定 URL 从配置创建一个 Realm 实例。
-
@Jay 文件管理器是授予父文件夹权限.. 我所做的是复制之前生成的所有文件并将它们添加到 iOS 应用程序项目并尝试访问它们。奇怪的是它只在模拟器上工作。我试图删除 .lock 文件相同的结果
标签: ios swift mongodb realm realm-mobile-platform