全2件 (2件中 1-2件目)
1

下のようなメッセージ送受信画面を作っています。(画面がしょぼいのはご勘弁ください)自分宛のメッセージの受信や、自分が送信したメッセージ※を最新の3回分のメッセージを表示したかったのですが、最新のメッセージの受信がうまくいかない。※自分が送信したメッセージも一度データベースに登録した後に受信する仕組み状況としては、アプリ起動時に、データベースに溜まっているデータは全て取得できるメッセージ送信ボタンをタップするとメッセージはデータベース上に正しく登録されている以上のことから、送受信のロジックそのものは正しく動作しているっぽい。ただ、最新のメッセージが表示されない。なんでかなぁと思い、appSyncClient のパラメータやメソッドをのぞいていたら「clearCaches()」というメソッドを発見。これか?というわけで、下のようなロジックをつくってみた。// キャッシュの初期化を行う// 返り値:// true : 初期化成功// false: 初期化失敗func clearCache() -> Bool {var result : Bool = true//appDelegateを取得するlet appDelegate = UIApplication.shared.delegate as! AppDelegate// データ取得前にキャッシュを初期化するdo {try appDelegate.appSyncClient?.clearCaches()} catch {self.errorCode = TMGPSDBProcess.DBERROR_CACHE_CLEAR_ERRORself.errorMessage = error.localizedDescriptionresult = false}return result}で、こいつを、fetch の前で実行。// データ取得前にキャッシュを初期化するif ( self.clearCache() == false ) {NotificationCenter.default.post(name: postName, object: nil)return}// データベースを検索する// 全件取得するappDelegate.appSyncClient?.fetch(query: ListTmgpsMessagesQuery()) {(result, error) inif error != nil {〜 以下省略 〜動いた!念のため、get系の処理の前に全てこのロジックを追加しました。解決時間2hハマった。
2020.09.29
コメント(0)

DynamoDBに対してCreate指示したら下図のようなエラーが発生した。keyとなる項目”id” に、本来は文字列”S”(例えば)が 期待されるところ、NULLが入っているから不正だよ、というエラー。そりゃそうだ。だって、セットしてないもん。エラーはいた時点でのGraphQLの定義。明示的に変数 id は定義していなかった。修正後。id を定義して、プログラムからも明示的にユニーク値をセットするようにした。解決。解決時間1h微妙にハマった。英語から逃げてはいけないという誰かの言葉を思い出しました。
2020.09.29
コメント(0)
全2件 (2件中 1-2件目)
1


![]()