UserDefaultで配列を保存しようとしましたが、Xcodeでエラーが表示されます。エラーメッセージはスレッド1:シグナルSIGABRTで、コンソールには "NSInvalidArgumentException、reason:非プロパティリストオブジェクトを挿入しようとしています"と表示されます。私は以前このコードを使用して配列にデータを格納しています:グローバルアレイ用の私のUserDefaultコードに何が問題になっていますか?
let tempRecipe = GlobalFavorites(recipeImageObject: "", recipeTextObject: "", recipeHeaderObject: "", favoriteRecipeArray: [globalFavoriteRecipes])
tempRecipe.recipeHeaderObject = self.recipeClassArray[self.currentView].recipeHeaderObject
tempRecipe.recipeTextObject = self.recipeClassArray[self.currentView].recipeTextObject
tempRecipe.recipeImageObject = self.recipeClassArray[self.currentView].recipeImageObject
globalFavoriteRecipes.favoriteRecipeArray.append(tempRecipe)
これは問題ありません。 UserDefaultでエラーを表示するコードを次に示します。
UserDefaults.standard.setValue(globalFavoriteRecipes.favoriteRecipeArray, forKey: "savedFavoriteArray")
これはグローバル配列であり、配列全体を格納したいと考えています。私はUserDefaultに配列を書き込む方法と関係があると思います。なぜなら、私にはそこにないものを格納しようとしているようだからです。それとも私は何が欠けていますか?
エラーをシェアするにはどうなりますか? – rmaddy
BTW - 'UserDefaults'のドキュメントを見ると' setValue(_:forKey:) 'メソッドが表示されません。だから、それを使わないでください。リストされた方法を使用して値を格納します。 – rmaddy
'set(_:forKey:)'メソッドを使う必要があります。 'UserDefaults.standard.set(globalFavoriteRecipes.favoriteRrayArray、forKey:" savedFavoriteArray ")' https://developer.apple.com/documentation/foundation/userdefaults/1414067-set –