[解決済み] NSUserdefaultsの配列の保存と読み込みはどのように行うのですか?
2023-04-27 15:54:56
質問
Swiftで辞書のようにオブジェクトを追加する配列を作りたいのですが、["key1": "value1", "key2": "value2"] という形式が必要でしょうか。
で保存しようとすると
NSUserDefaults
で保存しようとすると、すべて正しいのですが、読み込むときに
NSUserDefaults
をキーとして読み込むと、クラッシュします。私のvar objはどのようなタイプのデータを必要とするのでしょうか?
let def = NSUserDefaults.standardUserDefaults()
var key = "keySave"
var element: AnyObject!
var array1: [AnyObject!] = []
array1.append(["key1": "val1", "key2": "val2"])
array1.append(["key1": "val1", "key2": "val2"])
//save
var savestring : [AnyObject!]
savestring = array1
var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(savestring, forKey: key)
defaults.synchronize()
//read
var obj: [AnyObject!] = []
if(obj != nil){
print("size: ")
print(obj.count) //vary long value confused..
element = obj[0] //crash
print(element.objectForKey("key1"))
}
どのように解決するのですか?
質問には「配列の配列」とありますが、おそらくほとんどの人は、配列の配列を
UserDefaults
. そのような人のために、私はいくつかの一般的な例を追加します。
文字列の配列
配列の保存
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
配列の取得
let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
int配列
保存配列
let array = [15, 33, 36, 723, 77, 4]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedIntArray")
配列の取得
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedIntArray") as? [Int] ?? [Int]()
ブール配列
配列の保存
let array = [true, true, false, true, false]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedBoolArray")
配列の取得
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedBoolArray") as? [Bool] ?? [Bool]()
日付の配列
保存の配列
let array = [Date(), Date(), Date(), Date()]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedDateArray")
配列の取得
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
オブジェクトの配列
カスタムオブジェクト(および結果的にオブジェクトの配列)を
UserDefaults
. その方法については、以下のリンクを参照してください。
- カスタムオブジェクトをNSUserDefaultsに保存する
- UserDefaultsに色を保存するためのドキュメント
- プロパティリスト以外のオブジェクトをNSUserDefaultsとして設定しようとする試み
注意事項
-
nil合体演算子(
??
) を使うと、クラッシュすることなく、保存された配列や空の配列を返すことができます。つまり、オブジェクトがnilを返した場合、その次の値である??
演算子に続く値が代わりに使用されるということです。 -
ご覧の通り、基本的な設定は
Int
,Bool
そしてDate
. またDouble
. 私の知る限り、プロパティリストに保存できるものであれば、このように動作します。
関連
-
[解決済み] 使用しているSwiftのバージョンを確認するにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Swiftベースのアプリケーションは、OS X 10.9/iOS 7以下でも動作しますか?
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み】NSUserDefaultsにカスタムオブジェクトを格納する方法
-
[解決済み】NSUserDefaultsに文字列を保存しますか?
-
[解決済み] Swiftアプリでローカルデータを保存する方法とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プロパティリスト以外のオブジェクトをNSUserDefaultsとして設定しようとした場合
-
[解決済み] Swift 3でカスタム通知を作成するには?
-
[解決済み] タスクが終了するまで待機する
-
[解決済み] 固定サイズのオブジェクトの配列を作成する方法
-
[解決済み] 計算された読み取り専用プロパティとSwiftの関数との比較
-
[解決済み] ラウンドトリップスウィフト番号の種類は、データとの間で
-
[解決済み] Swift- Remove Push Notification Badge number?
-
[解決済み] Swiftでクラスメソッド/プロパティを作成するには?
-
[解決済み] Swiftの網羅的なSwitchステートメントのためのNoop
-
[解決済み] Swiftのインライン条件?