【发布时间】:2017-10-06 21:41:19
【问题描述】:
试图通过 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 中编写数组的方式有关,因为对我来说,我似乎正在尝试存储一些不存在的东西。或者我错过了什么?
【问题讨论】:
-
愿意分享错误吗?
-
顺便说一句 - 如果您查看
UserDefaults的文档,您将不会看到列出的setValue(_:forKey:)方法。所以不要使用它。使用列出的方法之一来存储值。 -
你需要使用
set(_:forKey:)方法。UserDefaults.standard.set(globalFavoriteRecipes.favoriteRecipeArray, forKey: "savedFavoriteArray")developer.apple.com/documentation/foundation/userdefaults/… -
@rmaddy 他正在使用 KeyValueCoding 方法developer.apple.com/documentation/objectivec/nsobject/…
-
@LeoDabus 是的,我知道,但我的意思是他们不应该这样做。
标签: swift xcode userdefaults