我创建了一个带有管理员帐户的领域,当我查看我的仪表板时,我的领域就在那里。它的所有者专栏是空白的吗?这是正常的吗?因为我用我的管理员帐户打开了同步域。
我的主要问题是,在默认权限中它表示“无法访问”。我试图让所有用户都有权在下面显示的域中编写:
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")
}
})
}
但不会出现错误或成功。我的代码有什么问题?谢谢!
答案 0 :(得分:3)
感谢您使用Realm。
您没有看到回调的原因是您直接在<ul class="c-rating">
<li class="c-rating__item is-active left" data-index="0"></li>
<li class="c-rating__item is-active" data-index="1"></li>
<li class="c-rating__item is-active left" data-index="2"></li>
<li class="c-rating__item is-active" data-index="3"></li>
<li class="c-rating__item is-active left" data-index="4"></li>
<li class="c-rating__item is-active" data-index="5"></li>
<li class="c-rating__item is-active left" data-index="6"></li>
<li class="c-rating__item" data-index="7"></li>
<li class="c-rating__item left" data-index="8"></li>
<li class="c-rating__item" data-index="9"></li>
</ul>
回调中运行applyPermission()
方法。 logIn()
方法必须在具有活动运行循环的线程上运行,并且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版本中的工作方式,以便在主队列上运行回调默认。因此,如果您在发布后升级到Realm 3.0.0,则不再需要使用上面详述的解决方法;您的原始代码应该按原样运行。