当领域对象服务器具有不同的 IP 时,我遇到了问题。该应用程序可以通过 Credential 登录,但之后它将返回空数据,尽管我的数据库位于该 IP 上并且可以通过 Realm Browser 访问。实际上,我只在领域对象服务器中使用一个帐户,并创建了一个包含用户名和密码的用户表,以便在它可以通过凭据连接到服务器后,我将读取屏幕上的用户名和密码并在数据库中检查它的信息。
连接 Realm Object Server 功能:
class func login(username: String, password: String, action: AuthenticationActions, completionHandler: @escaping ()->()) {
let serverURL = NSURL(string: realmIP)!
let credential = Credential.usernamePassword(username: username, password: password, actions: [action])
SyncUser.authenticate(with: credential, server: serverURL as URL) { user, error in
if let user = user {
syncUser = user
let syncServerURL = URL(string: realmURL)!
let config = Realm.Configuration(syncConfiguration: (user, syncServerURL))
realm = try! Realm(configuration: config)
} else if error != nil {
}
completionHandler()
}
}
SyncUser登录后从表中查询:
class func loginLocal(employee: String) -> Bool{
let predicate = NSPredicate(format: "employee = %@", employee)
if (realm != nil) {
let user = realm?.objects(MyUser.self).filter(predicate)
if ((user?.count)! > 0) {
return true
}
}
return false
}
该解决方案似乎很奇怪,因此我必须通过按下我的登录按钮多次调用一个函数,并希望它能够通过服务器。
这是我第一个使用 Realm 和 Realm Object Server 的应用程序,所以我在这种情况下没有太多经验。