我需要创建一个数组来添加具有这种格式的对象,例如Swift中的字典:[“ key1”:“ value1”,“ key2”:“ value2”]
当我尝试NSUserDefaults全部保存时是正确的,但是NSUserDefaults使用键读取时会崩溃。var obj需要什么类型的数据?
NSUserDefaults
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")) }
这个问题的意思是“数组数组”,但是我想大多数人可能只是想知道如何将数组保存到UserDefaults。对于那些人,我将添加一些常见示例。
UserDefaults
保存数组
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]()
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]()
let array = [true, true, false, true, 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(), Date()] let defaults = UserDefaults.standard defaults.set(array, forKey: "SavedDateArray")
let defaults = UserDefaults.standard let array = defaults.array(forKey: "SavedDateArray") as? [Date] ?? [Date]()
自定义对象(以及对象的数组)需要做更多的工作才能保存到UserDefaults。请参阅以下链接以了解操作方法。
??
Int
Bool
Date
Double