我们什么时候在Swift中使用AnyObject?

时间:2014-08-19 13:10:15

标签: swift

我学习斯威夫特,我无法理解以下例子:

let jsonObject: [AnyObject] = [["name": "John", "age": 21],["name": "Bob", "age": 35]]

jsonObject表示Dictionary具有结构<key>,<value>

的词典列表

为什么我可以将所有这些定义为AnyObject

来自AnyObject的来源仅为空protocol

protocol AnyObject {}

我尝试使用此方法将Object转换为Json String:

func JSONStringify(jsonObj: AnyObject) -> String {
    var e: NSError?
    let jsonData = NSJSONSerialization.dataWithJSONObject(
        jsonObj,
        options: NSJSONWritingOptions(0),
        error: &e)
    if e != nil {
        return ""
    } else {
        return NSString(data: jsonData, encoding: NSUTF8StringEncoding)
    }
}


let jsonString = JSONStringify(jsonObject)
println(jsonString)

----------------------------

那么let jsonObject2: [String:AnyObject]呢?据我所知,String继承了AnyObject。这是什么意思?

----------------------------

在其他例子中:

我创建了虚拟课程:

class Person {    
    var age:Int?    
    init(age:Int){
        self.age = age
    }
}

以下代码也适用:

let jsonObject3: [AnyObject] = [
    ["name": "John", "person": Person(age: 12)],
    ["name": "Bob", "person": Person(age: 25)]
]

JSONStringify方法不适用于jsonObject3并不会让我感到惊讶,因为其中一个值为Person类。嗯。我需要为AnyObject继承Person吗?

有人可以对AnyObject目标进行宣传吗?

谢谢,

0 个答案:

没有答案