首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将“Swift.Array<(Swift.String,Swift.String)>”类型的值转换为“Swift.AnyObject”类型

无法将“Swift.Array<(Swift.String,Swift.String)>”类型的值转换为“Swift.AnyObject”类型
EN

Stack Overflow用户
提问于 2016-02-04 12:12:38
回答 1查看 2.8K关注 0票数 1

我的swift代码如下所示

代码语言:javascript
复制
Family.arrayTuple:[(String,String)]? = []
Family.arrayTupleStorage:String?
Family.arrayTupleStorage:String = (newDir! as NSString).stringByAppendingPathComponent("arrayTuple.archive")
NSKeyedArchiver.archiveRootObject(Family.arrayTuple! as! AnyObject, toFile: Family.arrayTupleStorage!)

我有错误按摩在控制台窗口,而建设代码。

'Swift.Array<(Swift.String,Swift.String)>‘(0xcce8098)到'Swift.AnyObject’(0xcc8f00c)不能转换值。

如何存档Family.arrayTuple和解压缩Family.arrayTupleStorage

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 11:08:57

代码语言:javascript
复制
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")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35200717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档