NSCoding has never worked with either tuples or classes correctly (primarily 
because it is not really designed to do so). I would suggest to encode and 
decode either as an array of array of strings and convert or perhaps 
encode/decode as an array of classes representing the meaning of the tuple.

> On Sep 22, 2016, at 2:07 PM, Saagar Jha via swift-users 
> <swift-users@swift.org> wrote:
> 
> Hello,
> 
> I’ve been working on migrating some old code over to Swift 3, and I’m having 
> some trouble archiving an array of tuples:
> 
> class Foo: NSObject, NSCoding {
>       var bar: [(string1: String, string2: String)]
> 
>       required init?(coder aDecoder: NSCoder) {
>               bar = aDecoder.decodeObject(forKey: “bar”) as? [(string1: 
> String, string2: String)] ?? []
>       }
> 
>       func encode(with aCoder: NSCoder) {
>               aCoder.encode(bar, forKey: “bar”) // crash
>       }
> }
> 
> Unfortunately, this code doesn’t seem to work anymore. Is there any way to 
> get a array of tuple encoded without resorting to creating a struct or class 
> in its place?
> 
> Thanks,
> Saagar Jha
> 
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to