我学习斯威夫特,我无法理解以下例子:
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
目标进行宣传吗?
谢谢,