Swift枚举和NSCoding

Swift枚举和NSCoding,第1张

概述我有一个带有String属性和NS Image属性的’Thing’对象; Thing类有encodeWithCoder:和decodeWithCoder:方法,我可以使用NSKeyedArchiver / Unarchiver归档和解压缩[Thing]数组. 到现在为止还挺好.现在我想通过一系列方向扩展我的Thing类,其中’Direction’是以下枚举: enum Direction{ca 我有一个带有String属性和NS Image属性的’Thing’对象; Thing类有encodeWithCoder:和decodeWithCoder:方法,我可以使用NSKeyedArchiver / Unarchiver归档和解压缩[Thing]数组.

到现在为止还挺好.现在我想通过一系列方向扩展我的Thing类,其中’Direction’是以下枚举:

enum Direction{case north(direction:String)case East(direction:String)case South(direction:String)case West(direction:String)}

换句话说,我希望存储的数据是

thing1.directions: Direction = [.north("thing2"),.south("thing3")]

(在一个更完美的世界中,我将使用对我的东西的直接引用而不仅仅是它们的名称,但我意识到这将很容易创建引用循环 – 在创建Thing之前无法设置对另一个Thing的引用 – 所以我会克制.我正在寻找一种快速而又脏的方法来保存我的应用数据并继续前进.)

由于我将需要其他地方的指示,这是一个单独的实体,而不仅仅是Thing类中的枚举. (不确定这是否有所不同.)

使我的Direction枚举符合NSCoding的最佳方法是什么?
我能提出的最好的解决方法是创建一个[String:String]字典,其中“north”和“South”作为键,“thing2”和“thing3”作为值,并从中重构我的enum属性,但是有一个更好的方法?
就此而言,是否有一种方法可以使元组符合NSCoding,因为现在(String,String)让我“不兼容协议”AnyObject“’错误.

非常感谢.

解决方法 我所做的是给枚举一个类型并对其原始值进行编码和解码,或者实现枚举的描述并对该字符串进行编码和解码.无论哪种方式(或者如果你使用其他方式),你显然需要一种在枚举器和可存档类型之间双向转换的方法. 总结

以上是内存溢出为你收集整理的Swift枚举和NSCoding全部内容,希望文章能够帮你解决Swift枚举和NSCoding所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存