swift - 无法将类型 'Swift.Array<(Swift.String, Swift.String)>' 的值转换为 'Swift.AnyObject'

标签 swift anyobject

我的 swift 代码如下所示

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!)

我在构建代码时在控制台窗口中有错误消息。

'Could not cast value of type 'Swift.Array<(Swift.String, Swift.String)>' (0xcce8098) to 'Swift.AnyObject' (0xcc8f00c).'

如何存档 Family.arrayTuple 和取消存档 Family.arrayTupleStorage

最佳答案

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")
    }
}

关于swift - 无法将类型 'Swift.Array<(Swift.String, Swift.String)>' 的值转换为 'Swift.AnyObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200717/

相关文章:

swift - 为什么将函数类型转换为 AnyObject 有效

ios - 将动态 View 添加到 UIScrollView

ios - 对变量和结果的 Realm 查询

swift - 说所有删除类型都是不可初始化的是否正确?

IOS swift 如何在获取 Json 数据时检查空数组

ios - 通过返回类型填充 prepareForSegue 的 destinationViewController

swift - AnyObject如何遵守NSObjectProtocol?

swift - 如何处理哈希冲突?

swift - 将 Sprite 附加到 SKPhysicsBody

ios - 不会添加自定义图钉图像