所以我试图为每个登录的用户设置默认域,并且根据领域文档,这可以通过在文档之后附加userId并在那里创建新域并将其设置为每个用户的默认域来完成。
我有一个函数,每次用户登录时都会执行以下代码,以便为该用户提供特定数据。
我收到的错误是
***由于未捕获的异常终止应用程序' RLMException',原因:'使用每路径配置方法后无法设置默认配置。'
然而,根据此处的文档:https://realm.io/docs/swift/latest/#realm-configuration
,这似乎是正确的方法以下是Realm文档代码:
func setDefaultRealmForUser(username: String) {
var config = Realm.Configuration()
// Use the default directory, but replace the filename with the username
config.path = config.path.stringByDeletingLastPathComponent()
.stringByAppendingPathComponent(username)
.stringByAppendingPathExtension("realm")
// Set this as the configuration used for the default Realm
Realm.Configuration.defaultConfiguration = config
}
这是我的代码(在Swift 2中删除了stringBy ...方法,因此我将其更改为使用NSURL。但是,Realm仍然以字符串形式读取路径。)
var config = Realm.Configuration()
let realm = try! Realm()
// Use the default directory, but replace the filename with the username
var url = NSURL()
url = NSURL(fileURLWithPath: config.path!)
if let url2 = url.URLByDeletingLastPathComponent {
let url3 = url2.URLByAppendingPathComponent(userId)
let url4 = url3.URLByAppendingPathExtension("realm")
config.path = String(url4)
// Set this as the configuration used for the default Realm
if let newPath = config.path {
Realm.Configuration.defaultConfiguration.path = newPath //fails here
print("Successfully changed default realm to \(config.path)")
return
}
print("\n\n\n-------ERRORmid setting default realm to \(config.path)----\n\n\n")
return
}
print("\n\n\n-------ERRORlast setting default realm to \(config.path)----\n\n\n")
return
我试过了两个:
Realm.Configuration.defaultConfiguration.path = newPath
和
Realm.Configuration.defaultConfiguration = config
非常感谢你的帮助!
答案 0 :(得分:0)
看起来您正在调用以下不推荐使用的函数之一:
setSchemaVersion(_:atPath:migrationBlock:)
// or
Realm.setEncryptionKey(_:forPath:)
与Realm.Configuration
用法一起使用。这些方法与Realm.Configuration
不兼容,因此您应该完全移至Realm.Configuration
以避免这些问题。
这些弃用的方法将在Realm Objective-C和Realm Swift的下一个主要版本中完全删除。