不确定如何使用unarchivedDictionary来解决使用Swift中的userDefaults时出现NSInvalidArgumentException崩溃的问题
创始人
2024-12-27 18:30:16
0
  1. 首先,我们需要将数据进行编码并存储到UserDefaults中。可以使用NSKeyedArchiver类对数据进行编码。这样,我们可以轻松地将对象编码成NSData,然后使用UserDefaults进行存储。
let data = try NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: "key")
  1. 当需要从UserDefaults中获取数据时,我们可以使用object(forKey:)方法获取NSData,使用NSKeyedUnarchiver解码它,并将其转换为需要的类型。注意,使用unarchiveTopLevelObjectWithData会崩溃,要使用unarchiveObject(with:)
if let data = UserDefaults.standard.object(forKey: "key") as? NSData {
    if let object = try NSKeyedUnarchiver.unarchiveObject(with: data as Data) as? MyObject {
        // do something with the object
    }
}
  1. 如果仍然出现NSInvalidArgumentException崩溃,则可能是由于数据编码或解码时的错误导致的。您可以尝试将-encode(with:)和-init(coder:)方法实现在您的对象中,以确保正确的编码和解码。
class MyObject: NSObject, NSCoding {
    var name: String?
    var age: Int?

    func encode(with aCoder: NSCoder) {
        aCoder.encode(name, forKey: "name")
        aCoder.encode(age, forKey: "age")
    }

    required init?(coder aDecoder: NSCoder) {
        name = aDecoder.decodeObject(forKey: "name") as? String
        age = aDecoder.decodeObject(forKey: "age") as? Int
    }
}

相关内容

热门资讯

二分钟透视辅助插件!德普之星透... 二分钟透视辅助插件!德普之星透视免费(透视辅助软件)详细辅助脚本(一直脚本)1、德普之星透视免费透视...
一分钟免费脚本!智星德州可以透... 一分钟免费脚本!智星德州可以透视吗,pokemmo内置修改器,详细教程(有挂秘籍);1、许多玩家不知...
两分钟透视辅助软件!德普之星辅... 两分钟透视辅助软件!德普之星辅助工具如何设置(透视辅助)详细辅助程序(都是程序);1、透视辅助简单,...
一分钟作弊挂!xpoker辅助... 一分钟作弊挂!xpoker辅助神器(透视辅助)详细辅助助手(真是助手)1、xpoker辅助神器ai辅...
九分钟透视底牌!德州透视是真的... 九分钟透视底牌!德州透视是真的假的(透视脚本免费)详细辅助挂(好像挂)1、下载好德州透视是真的假的辅...
6分钟代打辅助!werplan... 6分钟代打辅助!werplan脚本(透视辅助)详细辅助免费(切实免费);1、下载好werplan脚本...
二分钟透视挂!德普之星透视,德... 二分钟透视挂!德普之星透视,德普之星透视辅助软件下载,详细教程(有挂教程);1、点击下载安装,德普之...
三分钟透视辅助!pokerno... 三分钟透视辅助!pokernow辅助控制,sohoopoker辅助,详细教程(有挂软件)1、poke...
五分钟开辅助!德普之星私人局透... 五分钟开辅助!德普之星私人局透视,德普之星辅助工具如何打开,详细教程(有挂细节)亲,关键说明,德普之...
1分钟作弊视频!sohoo辅助... 1分钟作弊视频!sohoo辅助,哈糖大菠萝能开挂吗,详细教程(有挂秘笈)1、许多玩家不知道sohoo...