2017-10-05 18 views
0

管理者アカウントでレルムを作成しました。ダッシュボードを見るとレルムがあります。しかし、その所有者の列は空白ですか?それは普通ですか?私は自分のadminアカウントで同期された領域を開いたので。レルムオブジェクトサーバ素早く、レルムのデフォルトのアクセス権を変更する

私の主な質問はこれです。デフォルトのアクセス許可では「アクセスなし」と表示されます。私はすべてのユーザーに、以下に示すその領域に書き込む許可を与えようとしました:

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

レルムを使用していただきありがとうございます。

コールバックが表示されない理由は、コールバックで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にアップグレードした後は、上記の回避策を使用する必要はなくなります。元のコードはそのまま動作するはずです。

関連する問題