2017-10-05 76 views
0

我使用管理員帳戶創建了領域,當我查看儀表板時,我的領域就在那裏。它的所有者列是空白的?這是正常的嗎?因爲我用我的管理員帳戶打開了同步領域。Realm Object Server Swift,更改領域的默認權限

我的主要問題是,在默認權限中,它表示「無法訪問」。我試着給所有用戶的權限在下面顯示該領域寫:

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") 

      } 

     }) 

    } 

但是沒有錯誤或成功打印。我的代碼有什麼問題?謝謝!

回答

3

感謝您使用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這個用例設計錯誤,並會改變方式logIn()作品在我們即將發佈的Realm 3.0.0版本中,默認情況下在主隊列上運行回調。因此,如果您在發佈Realm 3.0.0後升級,則不再需要使用上面詳述的解決方法;您的原始代碼應該按原樣運行。