みやたくワークスの徒然ブログ

みやたくワークスの徒然ブログ

PR

×

Profile

たくぷれっさ2号機

たくぷれっさ2号機

Calendar

Archives

2026.05
2026.04
2026.03
2026.02
2026.01
2020.09.29
XML
カテゴリ: AppSync
下のようなメッセージ送受信画面を作っています。
(画面がしょぼいのはご勘弁ください)


自分宛のメッセージの受信や、自分が送信したメッセージ※を最新の3回分のメッセージを表示したかったのですが、最新のメッセージの受信がうまくいかない。
※自分が送信したメッセージも一度データベースに登録した後に受信する仕組み

状況としては、
  1. アプリ起動時に、データベースに溜まっているデータは全て取得できる
  2. メッセージ送信ボタンをタップするとメッセージはデータベース上に正しく登録されている
以上のことから、送受信のロジックそのものは正しく動作しているっぽい。

ただ、最新のメッセージが表示されない。

なんでかなぁと思い、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_ERROR
self . errorMessage = error. localizedDescription

result = false
}

return result
}



// データ取得前にキャッシュを初期化する
if ( self . clearCache () == false ) {
NotificationCenter . default . post (name: postName, object: nil )
return
}

// データベースを検索する
// 全件取得する
appDelegate. appSyncClient ?. fetch (query: ListTmgpsMessagesQuery ()) {(result, error) in
if error != nil {

〜 以下省略 〜


​動いた!​​


念のため、get系の処理の前に全てこのロジックを追加しました。

解決時間2h

ハマった。​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2020.09.29 17:19:11
コメント(0) | コメントを書く
[AppSync] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: