3

Realm モバイル プラットフォームのチュートリアル (リンク) を実行しました。Swift タスク アプリを作成します。

ローカル Mac でアプリとサーバーを正しく動作させることができました。テーブルビューにタスクを追加できました。

次に、DigitalOcean で Ubuntu 16.04 ドロップレットを作成しました。サーバーを稼働させることができ、Realm ダッシュボードを表示できました。

問題は、新しいサーバー IP アドレス (ubuntu インスタンス) でアプリを実行すると、「タスクの追加」ポップアップが表示されますが、アプリのテーブルビューにタスクが追加されないことです。

次のコードは、db にタスクを追加します。

try! items.realm?.write {
 items.insert(Task(value: ["text": text]), at: items.filter("completed = false").count)
}

ローカル マシンでコードを実行すると、値が挿入されますがinsert、リモート サーバーを使用すると行がヒットすることはありません。

Realm config を新しい URL に設定する場所は次のとおりです。

let configuration = Realm.Configuration(
                syncConfiguration: (user, URL(string: "realm://128.199.119.xxx:9080/~/realmtasks")!)
        )

configuration.ymlRealmファイルをリモート サーバーにデプロイするときに、Realm ファイルを更新する必要がありますか? はいの場合、誰かがconfiguration.yml例を持っているか、ファイルをセットアップするために何をする必要がありますか?

チュートリアル ビデオでは、info.plist を更新する必要があることが言及されています。以下の info.plist のエディションは、展開されたサーバーにアクセスするアプリとアプリ ストアのアプリで同じですか?

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

の結果は次のcat /var/log/realm-object-server.logとおりです。

2016-10-29T03:09:06.501Z - info: sync-server: Connection[5]: Connection from 127.0.0.1:58822
2016-10-29T03:09:06.631Z - info: sync-server: Connection[5]: Received: CLIENT(protocol_version=15, client_info_size=2, client_info='{}')
2016-10-29T03:09:06.788Z - info: sync-server: Connection[5]: Session[1]: Session initiated (session_ident=1).
2016-10-29T03:09:06.789Z - info: sync-server: Connection[5]: Session[1]: Received: BIND(server_path=/72c5a/realmtasks, signed_user_token='...xxm/7UjDkuEqQ==', need_file_ident_pair=0)
2016-10-29T03:09:06.789Z - info: sync-server: Connection[5]: Session[1]: Received: IDENT(server_file_ident=21314, client_file_ident=1, client_file_ident_secret=1477, scan_server_version=2, scan_client_version=2, latest_server_version=2, latest_server_session_ident=1643)
2016-10-29T03:09:17.069Z - info: sync-server: Connection[5]: Session[1]: Session terminated (session_ident=1).
2016-10-29T03:09:17.070Z - info: sync-server: Connection[5]: Connection closed by client: End of input
2016-10-29T03:09:26.769Z - info: sync-server: Connection[6]: Connection from 127.0.0.1:58866
2016-10-29T03:09:26.895Z - info: sync-server: Connection[6]: Received: CLIENT(protocol_version=15, client_info_size=2, client_info='{}')
2016-10-29T03:09:27.053Z - info: sync-server: Connection[6]: Session[1]: Session initiated (session_ident=1).
2016-10-29T03:09:27.053Z - info: sync-server: Connection[6]: Session[1]: Received: BIND(server_path=/a4fdec5a/realmtasks, signed_user_token='...K0k7mw==', need_file_ident_pair=0)
2016-10-29T03:09:27.053Z - info: sync-server: Connection[6]: Session[1]: Received: IDENT(server_file_ident=21094, client_file_ident=1, client_file_ident_secret=14907, scan_server_version=2, scan_client_version=2, latest_server_version=2, latest_server_session_ident=164553)

オブジェクト サーバーが実行されており、タスク テーブルとタスク リスト テーブルを確認できますが、テーブルにレコードを書き込むことができません。

私がチェックするauth.logと、次のようになります

Nov  1 10:53:22 digitalocean sshd[13684]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=221.229.172.111  user=root
Nov  1 10:53:49 digitalocean sshd[13701]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=221.229.172.111  user=root
Nov  1 10:53:50 digitalocean sshd[13701]: Failed password for root from 221.229.172.111 port 43992 ssh2
Nov  1 10:53:55 digitalocean sshd[13701]: message repeated 2 times: [ Failed password for root from 221.229.172.111 port 43992 ssh2]
Nov  1 10:53:55 digitalocean sshd[13701]: Received disconnect from 221.229.172.111 port 43992:11:  [preauth]
Nov  1 10:53:55 digitalocean sshd[13701]: Disconnected from 221.229.172.111 port 43992 [preauth]
Nov  1 10:53:55 digitalocean sshd[13701]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=221.229.172.111  user=root
4

1 に答える 1

1

私はprobemを見つけたと思います。

チュートリアルのupdateList()機能:

func updateList() {
 if self.items.realm == nil, let list = self.realm.objects(TaskList.self).first {
  self.items = list.items
 }
 self.tableView.reloadData()
}

self.itemsself.realm.objects(TaskList.self).firstリストにタスクが追加されるまで nil を返すため、設定されることはありません。iOS バージョンのコードが機能する前に、タスクを追加する必要があります (私の場合はアプリの Mac バージョンを使用しています)。

于 2016-11-09T03:41:08.420 に答える