gpt4 book ai didi

ios - NSKeyedUnarchiver unarchiveObjectWithData :data returns non nil object but with nil properties

转载 作者:行者123 更新时间:2023-11-29 05:21:27 25 4
gpt4 key购买 nike

我已经构建了一个包含一些模型类的 swift 框架,并且我一直在另一个 ObjC 应用程序中使用该框架,没有任何问题。该应用程序使用 NSKeyedArchiver/NSKeyedUnarchiverNSUserDefaults 存储/检索数据对象:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myCustomer];
[self.prefs setObject:data forKey:@"mykey"];

哪里myCustomer是框架中 swift 类的对象。要检索存储的对象,我这样做:

NSData *data = [self.prefs dataForKey:@"mykey"];
Customer *myCustomer = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Swift 类如下所示:

@objc public class Customer: NSObject, Codable {
@objc public var customerID: String
@objc public var email: String?
}

问题是,最近更新了 swift 框架后(我对其他一些类做了一些更改,而不是 Customer),myCustomer检索自 unarchiveObjectWithData它的所有属性都是 nil . 对象本身不为零,但它的所有属性都为零myCustomer.email为零且 myCustomer.customerID为零。当我切换回旧版本框架时,上面的代码工作正常。

这几天一直在尝试各种事情,但没有任何效果。该应用程序的最低部署是 iOS 12,框架是用 swift 5.0 编写的。非常感谢任何提示、想法,当然还有答案。

最佳答案

Codable 它与 NSCoding 不同。要将 Codable 对象编码到 plist 文件中,您需要使用 PropertyListEncoder。如果您需要 JSON 数据,只需使用 JSONEncoder。要使您的对象符合 NSCoding 要求,您可以检查此 post

关于ios - NSKeyedUnarchiver unarchiveObjectWithData :data returns non nil object but with nil properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58657122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com