领域对象服务器 Swift,更改领域的默认权限
Realm Object Server Swift, changing default permission of a realm
我用管理员帐户创建了一个领域,当我查看仪表板时,我的领域就在那里。它的所有者列是空白的吗?正常吗?因为我用我的管理员帐户打开了那个同步领域。
我的主要问题是,在默认权限中显示 "no access"。我试图授予所有用户在如下所示的领域中写入的权限:
SyncUser.logIn(with: admin, server: serverURL) { (user, error) in
let permission = SyncPermissionValue(realmPath: "realm://myServerIp/swipeItApp/", username: "*", accessLevel: .write)
user?.applyPermission(permission, callback: { (error) in
if error != nil {
print(error?.localizedDescription)
} else {
print("success")
}
})
}
但既没有打印错误也没有打印成功。我的代码有什么问题?谢谢!
感谢使用 Realm。
您没有看到回调的原因是因为您直接在 logIn()
回调中 运行 使用 applyPermission()
方法。 applyPermission()
方法必须在具有活动 运行 循环的线程上 运行,并且 logIn()
回调 运行 在没有 运行 的线程上由后台队列管理的循环。
要解决此问题,请使用 DispatchQueue.main.async
将您的代码分派回主队列:
SyncUser.logIn(with: admin, server: serverURL) { (user, error) in
let permission = SyncPermissionValue(realmPath: "realm://myServerIp/swipeItApp/", username: "*", accessLevel: .write)
DispatchQueue.main.async {
user?.applyPermission(permission, callback: { (error) in
if error != nil {
print(error?.localizedDescription)
} else {
print("success")
}
})
}
}
我们认为需要为此用例使用 DispatchQueue.main.async
是一个设计错误,并且将在我们即将发布的 Realm 3.0.0 版本中将 logIn()
的工作方式更改为 运行默认情况下在主队列上回调。因此,如果您在 Realm 3.0.0 发布后升级到它,您将不再需要使用我上面详述的解决方法;您的原始代码应该按原样工作。
我用管理员帐户创建了一个领域,当我查看仪表板时,我的领域就在那里。它的所有者列是空白的吗?正常吗?因为我用我的管理员帐户打开了那个同步领域。
我的主要问题是,在默认权限中显示 "no access"。我试图授予所有用户在如下所示的领域中写入的权限:
SyncUser.logIn(with: admin, server: serverURL) { (user, error) in
let permission = SyncPermissionValue(realmPath: "realm://myServerIp/swipeItApp/", username: "*", accessLevel: .write)
user?.applyPermission(permission, callback: { (error) in
if error != nil {
print(error?.localizedDescription)
} else {
print("success")
}
})
}
但既没有打印错误也没有打印成功。我的代码有什么问题?谢谢!
感谢使用 Realm。
您没有看到回调的原因是因为您直接在 logIn()
回调中 运行 使用 applyPermission()
方法。 applyPermission()
方法必须在具有活动 运行 循环的线程上 运行,并且 logIn()
回调 运行 在没有 运行 的线程上由后台队列管理的循环。
要解决此问题,请使用 DispatchQueue.main.async
将您的代码分派回主队列:
SyncUser.logIn(with: admin, server: serverURL) { (user, error) in
let permission = SyncPermissionValue(realmPath: "realm://myServerIp/swipeItApp/", username: "*", accessLevel: .write)
DispatchQueue.main.async {
user?.applyPermission(permission, callback: { (error) in
if error != nil {
print(error?.localizedDescription)
} else {
print("success")
}
})
}
}
我们认为需要为此用例使用 DispatchQueue.main.async
是一个设计错误,并且将在我们即将发布的 Realm 3.0.0 版本中将 logIn()
的工作方式更改为 运行默认情况下在主队列上回调。因此,如果您在 Realm 3.0.0 发布后升级到它,您将不再需要使用我上面详述的解决方法;您的原始代码应该按原样工作。