Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 什么';全局数组的用户默认代码有什么问题?_Swift_Xcode_Userdefaults - Fatal编程技术网

Swift 什么';全局数组的用户默认代码有什么问题?

Swift 什么';全局数组的用户默认代码有什么问题?,swift,xcode,userdefaults,Swift,Xcode,Userdefaults,试图通过UserDefault存储数组,但Xcode给了我一个错误。错误消息是线程1:SIGABRT,控制台显示“NSInvalidArgumentException,原因:尝试插入非属性列表对象”。我以前使用以下代码将数据存储在阵列中: let tempRecipe = GlobalFavorites(recipeImageObject: "", recipeTextObject: "", recipeHeaderObject: "", favoriteRecipeArray: [global

试图通过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中编写数组有关,因为在我看来,我试图存储一些不存在的东西。或者我遗漏了什么?

如果
globalFavoriteRecipes.FavoriteReciperary
是一个自定义对象数组,则需要确保正确存档和取消存档它们


这篇文章还涉及到一些其他选项,因为NSUserDefaults并不是存储可能会变得相当大的数组的最佳位置,在本例中,它听起来可能会根据变量名而变得相当大。

使用
set
而不是
setValue

UserDefaults.standard.set(globalfavoritecipes.favoriterereciparray,forKey:“savedFavoriteArray”)


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

是否愿意分享错误?顺便说一句-如果您查看
UserDefaults
的文档,您将不会看到
setValue(uuwy:forKey:)
方法列出。所以不要使用它。使用列出的一种方法存储值。您需要使用
set(\uuquo:forKey:)
method
UserDefaults.standard.set(globalFavoriteRecipes.FavoriteReciperaRay,forKey:“savedFavoriteArray”)
@rmaddy他使用的是KeyValueCoding方法@LeoDabus是的,我知道,但我的观点是它们不应该是。谢谢,我会查出来的!关于数组大小,它只包含文本。这对商店来说会很大吗?应该用什么来代替?