Swift使用NSCoding编码元组

是否可以使用NSCoding存储元组我有一个元组((UInt8,UInt8),(UInt8,UInt8)).但是aCoder.encodeObject(myTuple)不起作用.我是否必须将元组转换为NSData,或者这绝对不可能?谢谢你的帮助
元组不能编码,因为它不是一个类,但一种方法是分别编码元组的每个组件,然后在解码时解码每个组件,然后将元组的值设置为由解码内容构造的元组.
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let obj = SomeClass()
        obj.foo = (6,5)

        let data = NSKeyedArchiver.archivedDataWithRootObject(obj)
        NSUserDefaults.standardUserDefaults().setobject(data,forKey: "books")

        if let data = NSUserDefaults.standardUserDefaults().objectForKey("books") as? NSData {
            let o = NSKeyedUnarchiver.unarchiveObjectWithData(data) as SomeClass
            println(o.foo) // (Optional(6),Optional(5))

        }
    }
}

class SomeClass: NSObject,NSCoding {
    var foo: (x: Int?,y: Int?)!

    required convenience init(coder decoder: NSCoder) {
        self.init()
        let x = decoder.decodeObjectForKey("myTupleX") as Int?
        let y = decoder.decodeObjectForKey("myTupleY") as Int?
        foo = (x,y)
    }

    func encodeWithCoder(coder: NSCoder) {
        coder.encodeObject(foo.x,forKey: "myTupleX")
        coder.encodeObject(foo.y,forKey: "myTupleY")
    }
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...