ios - 如何将元组字典保存和读取到 NSUserDefaults?

标签 ios swift nsuserdefaults

我有一个 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/

相关文章:

ios - UITabBar.appearance().tintColor 不改变图标颜色

ios - 如何获取UIWebView加载的网页的高度?

iphone - NSManagedObject-如何获取属性的类型

如果无法返回 Facebook 个人资料,Swift 2.3 会崩溃

objective-c - 使用 NSUserDefaults 错误保存隐藏按钮状态

objective-c - 我如何接收 cocoa 绑定(bind)值已更改的通知?

ios - 向 NSUserDefaults 添加新设置

ios - 在 iOS 5 中使用 Storyboard时无法将多个按钮分配给 UINavigationItem

ios - 获取 App Store 上所有应用的用户评分数

ios - Crashlytics:仪表板中显示了一些崩溃,但没有发现问题