私の iOS アプリのアップデートが App Store で公開されたので、やけどを負いました。残念ながら、新しい機能を使用すると、私のコードでNSUserDefaults
. 私のアプリは を使用していますregisterDefaults
が、新機能はアップグレード後に存在しないキーに書き込もうとします。によってキーが作成されるため、最初からインストールしても問題なく動作しregisterDefaults
ます。
具体的には、私のアプリはネストされた辞書を使用しているため、更新前の設定ファイルは次の構造になっています。
<dict>
<key>Alpha</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
<key>Beta</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
<key>Charlie</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
</dict>
—更新後、キーDeltaが必要です。
<dict>
<key>Alpha</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
<key>Beta</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
<key>Charlie</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
<key>Delta</key>
<dict>
<key>Key</key>
<string>Value</string>
</dict>
</dict>
いくつかのキーと値を書き込むためにユーザーのデフォルトからDeltaの辞書を取得しようとすると、コードが失敗します。このシナリオの辞書はnil
、更新後に環境設定ファイルにないためです。
この状況を処理するためのベストプラクティスの方法は何ですか? Deltaのディクショナリnil
に書き込む前に、必要に応じてそれを作成するかどうかを確認するだけですか、それともベルトとブレースのアプローチが少ないですか?