swift struct如何归档解档

struct不能被序列化成NSData,不能归解档,class可以,因为归解档的类必须遵守 NSCoding协议,而NSCoding只适用于继承自NSObject的类,struct不能遵守NSCoding协议。(上述摘录)

解决方案:

定义一个protocol,包含两个方法:

1.从结构体中得到一个NSDictionary对象

2.使用一个NSDictionary对象实例化结构体 NSDictionary可以使用NSKeyedArchiver进行序列化 好处:所有遵守该协议的结构体都可以被序列化(上述摘录)

感觉挺麻烦,我做了个简单的实验。可以正常转换。。

要归档的struct转成NSData呗,解档了再转成struct。貌似更简单点,欢迎指导

NSData遵守NSSecureCoding协议,NSSecureCoding协议继承自NSCoding。struct TestStruct {

            var age:Int

        }

        var date =TestStruct(age:36)

        var msg: NSData = NSData(bytes: &date, length: MemoryLayout<TestStruct>.stride(ofValue: date));

        print(msg);

        var unMsg:TestStruct = TestStruct(age: 10)

        msg.getBytes(&unMsg, length: MemoryLayout<TestStruct>.stride(ofValue: date))

        print(msg, unMsg)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容