Smart Update Summary (3)
Status
update()
メソッドが全ての情報構造体のステータスを変更した後、smartUpdateAllOfBlocks()
はこれらのステータスをチェックしながら DB
を変更していきます。どのように DB
が変更されるかはステータスによって決定されます。
Loaded
情報構造体はロードされています。そして、この情報と最新コレクションの別の情報には違いがありません。したがって、この情報に関して
DB を変更する必要はありません。
Updated
情報構造体と別の情報には違いがあります。そして、この情報はもう一方の情報によって既に更新されています。従って、この情報に関するデータベースのレコードを更新する必要があります。updateBlockByInfo()
はそのためによいユーティリティメソッドです。
Order Updated
情報構造体と別の情報は同じ内容です。しかし、ただオーダーのみが異なります。従って、この情報に関するレコードのオーダーフィールドのみを更新する必要があります。なお、ブロックにはオーダー情報はありません。このステータスはプリファレンスのみに適用されます。
New
現在のコレクションがある情報を持っていなかったとき、それは現在のコレクションへ追加されます。そして、その情報のステータスは
'New'
に変更されます。この場合、 DB
にそれを挿入する必要があります。InstallBlockByInfo()
はそのために良いユーティリティメソッドです。
Deleted
この情報構造体が最新コレクションの中でみつからなかったので、この情報のステータスは'deleted'
に変更されています。この場合、それを DB
から削除する必要があります。 uinstallBlockByInfo()
はそのために良いユーティリティメソッドです。
結論
smartUpdateAllOfBlocks()
と smartUpdateAllOfPreferences()
は非常に便利です、なぜならそれらは私がここ最近で説明した十分なプロセスを実装しているからです。ほとんどの場合、あなたはアップデート処理をこれらのユーティリティメソッドに委ねることができるでしょう。しかし、もしあなたがあなたのフェイズド・アップグレードの中で高度なアップデートを必要とするのであれば、あなたはこれらのクラスを理解するべきです。