[解決済み] iOSでNSUserDefaultsがNSMutableDictionaryの保存に失敗するのはなぜですか?
2022-05-11 21:19:19
質問
を保存したいのですが
NSMutableDictionary
オブジェクトを
NSUserDefaults
. のキータイプは
NSMutableDictionary
は
NSString
の場合、値のタイプは
NSArray
を実装したオブジェクトのリストが含まれています。
NSCoding
. ドキュメントごとに
NSString
と
NSArray
に準拠しています。
NSCoding
.
このエラーが発生します。
[NSUserDefaults setObject: forKey:]: NSCFDictionaryクラスの非プロパティ値...を挿入しようとしました。
解決方法は?
保存する前に、ルートオブジェクトをエンコードする方法があります (
NSArray
オブジェクト)を使って
NSKeyedArchiver
で終了する。
NSData
. 次に、UserDefaults を使用して
NSData
.
データが必要なときは、読み出した
NSData
を使用します。
NSKeyedUnarchiver
を変換するために
NSData
をオブジェクトに戻す。
との間で変換する必要があるため、少し面倒です。
NSData
を毎回実行する必要がありますが、うまくいっています。
ここでは、1つのリクエストにつき1つの例を示します。
保存してください。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
ロードする。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
を実装した配列の要素です.
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
そして、その実装において
CommentItem
は、2つのメソッドを提供する。
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
どなたか良い解決策をご存知ですか?
皆さん、ありがとうございます。
関連
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
[解決済み] Swift 3 でカスタムオブジェクトを保存しようとすると、非プロパティリストオブジェクトの挿入が試行される
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み】NSUserDefaultsをクリアする。
-
[解決済み】NSUserDefaultsに文字列を保存しますか?
-
[解決済み】プロパティリスト以外のオブジェクトをNSUserDefaultsとして設定しようとした場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UIViewController のビューが表示されているかどうかを確認する方法
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] swiftで電子メールアドレスを検証する方法は?