-3

试图通过 UserDefault 存储一个数组,但 Xcode 给了我一个错误。错误消息是线程 1:信号 SIGABRT,控制台显示“NSInvalidArgumentException,原因:尝试插入非属性列表对象”。我以前使用以下代码将数据存储在数组中:

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 中编写数组的方式有关,因为对我来说,我似乎正在尝试存储不存在的东西。或者我错过了什么?

4

2 回答 2

0

如果globalFavoriteRecipes.favoriteRecipeArray是一组自定义对象,则需要确保正确归档和取消归档它们。请参阅此 StackOverflow 帖子。

该帖子还涉及其他一些选项,因为 NSUserDefaults 不是存储可能会变得非常大的数组的最佳位置,听起来在这种情况下它可以基于变量名称。

于 2017-10-06T21:53:16.797 回答
0

set不使用setValue

UserDefaults.standard.set(globalFavoriteRecipes.favoriteRecipeArray, forKey: "savedFavoriteArray")

但是,我同意@Jake,这应该只用于存储少量数据,而不是大型数组。快乐编码!

于 2017-10-06T22:23:40.823 回答