无法对元组进行编码,因为它不是类,但是一种方法是分别对元组的每个组成部分进行编码,然后在解码时对每个组成部分进行解码,然后将元组的值设置为根据解码内容构造的元组。
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(prer deprer: NSCoder) { self.init() let x = deprer.depreObjectForKey("myTupleX") as Int? let y = deprer.depreObjectForKey("myTupleY") as Int? foo = (x,y) } func enpreWithCoder(prer: NSCoder) { prer.enpreObject(foo.x, forKey: "myTupleX") prer.enpreObject(foo.y, forKey: "myTupleY") }}


