如何在swift中的NSUserdefaults中保存和读取阵列数组?
我需要创建一个数组来添加这样的格式,如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")) }
这个问题是“array of array”,但我想大多数人可能来这里只是想知道如何将数组保存到UserDefaults。对于那些人我会添加一些常见的例子。
更新为Swift 3 字符串数组 保存数组 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]() Bool阵列 保存数组 let array = [true,true,false,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()] let defaults = UserDefaults.standard defaults.set(array,forKey: "SavedDateArray") 检索数组 let defaults = UserDefaults.standard let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]() 对象数组 自定义对象(因此对象数组)需要更多的工作来保存到UserDefaults。请参阅以下链接,了解如何执行此操作。 > Save custom objects into NSUserDefaults 笔记 > nil coalescing运算符(??)允许您返回保存的数组或空数组而不会崩溃。这意味着如果对象返回nil,那么跟随??将使用运算符。>您可以看到,Int,Bool和Date的基本设置是一样的。我也用Double测试了。据我所知,任何可以保存在属性列表中的内容都可以这样工作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |