我有一个 dictionary = String: ([(String)], [(Int)], NSDate, Bool, [(String)]) 我试图在应用程序调用 applicationWillTerminate 时将其解构为单独的数组
var codes = [(String)]()
var messages = [[String]]()
var senders = [[Int]]()
var dates = [(NSDate)]()
var bools = [(Bool)]()
var pairs = [[String]]()
for code in self.dictionary.keys {
codes.append(code)
messages.append(self.dictionary[code]!.0)
senders.append(self.dictionary[code]!.1)
dates.append(self.dictionary[code]!.2)
bools.append(self.dictionary[code]!.3)
pairs.append(self.dictionary[code]!.4)
}
self.userDefaultsMessages.setObject(codes, forKey: "userMessagesArrays")
self.userDefaultsSenders.setObject(messages, forKey: "userSentArrays")
self.userDefaultsDates.setObject(senders, forKey: "userDatesArray")
self.userDefaultsDeletedBool.setObject(dates, forKey: "userDeletedArrays")
self.userDefaultsPairs.setObject(bools, forKey: "userPairsArrays")
self.userDefaultsCodeKeys.setObject(pairs, forKey: "userCodesArrays")
self.userDefaultsCodeKeys.synchronize()
self.userDefaultsMessages.synchronize()
self.userDefaultsSenders.synchronize()
self.userDefaultsDates.synchronize()
self.userDefaultsDeletedBool.synchronize()
self.userDefaultsPairs.synchronize()
然后我尝试在应用调用 applicationDidBecomeActive 时将它们全部拉回一起
//阅读 如果让 savedCodesArray:AnyObject? = self.userDefaultsCodeKeys.objectForKey("userCodesArrays") { self.userCodes = savedCodesArray!作为! [字符串]
if let savedMessagesArray : AnyObject? = self.userDefaultsCodeKeys.objectForKey("userMessagesArrays") {
self.Usermessages = savedMessagesArray! as! [[String]]
if let savedSendersArray : AnyObject? = self.userDefaultsCodeKeys.objectForKey("userSentArrays") {
self.Usersenders = savedSendersArray! as! [[Int]]
if let savedDatesArray : AnyObject? = self.userDefaultsCodeKeys.objectForKey("userDatesArray") {
self.Userdates = savedDatesArray! as! [NSDate]
if let savedBools : AnyObject? = self.userDefaultsCodeKeys.objectForKey("userDeletedArrays") {
self.Userbools = savedBools! as! [Bool]
if let savedPairs : AnyObject? = self.userDefaultsCodeKeys.objectForKey("userPairsArrays") {
self.Userpairs = savedPairs! as! [[String]]
var indexPath: Int = 0
for code in self.userCodes {
self.dictionary[code]! = [self.Usermessages[indexPath], self.Usermessages[indexPath], self.Userdates[indexPath], self.Userbools[indexPath], self.Userpairs[indexPath]]
}
}
}
}
}
}
}
我是 iOS 开发的新手,需要帮助,我如何将单个字典 = String: ([(String)], [(Int)], NSDate, Bool, [(String)]) 保存到 NSUserDefaults然后稍后阅读..文档不是很有帮助,因为它只适用于简单的字典
代码看起来非常繁琐,所以我知道我做不好。这应该是一个简单的解决方案,因为我只有一个变量可以保存到 NSUserDefaults。
最佳答案
简短的回答:你不能。
NSUserDefaults
只会记录“属性列表对象”(字典、数组、字符串、数字(整数和 float )、日期、二进制数据和 bool 值)。
您不能将任何其他类型的数据保存到 NSUserDefaults
或属性列表中。唯一的解决方案是将其他数据类型转换为那些类型。
元组不是这些类型之一,因此它们不能保存到用户默认值中。
关于ios - 如何将元组字典保存和读取到 NSUserDefaults?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236277/