我正在学习Swift语言,发现其中有Dictionary
数据类型。
但是,有很多例子中使用了Swift中的NSDictionary
数据类型。
这两者之间有什么区别呢?
我想在Swift中像PHP中的数组一样使用带索引的数组。
那么,在这种情况下,哪个更好用呢?
我正在学习Swift语言,发现其中有Dictionary
数据类型。
但是,有很多例子中使用了Swift中的NSDictionary
数据类型。
这两者之间有什么区别呢?
我想在Swift中像PHP中的数组一样使用带索引的数组。
那么,在这种情况下,哪个更好用呢?
字典是一种本地的Swift结构体。NSDictionary是一个Cocoa类。它们之间可相互桥接(在通常的限制内),正如文档非常清楚和完整地解释的那样。
这与数组和NSArray完全平行。
NSDictionary
通常没有指定类型。Dictionary
被认为具有特定类型。Dictionary
更可取。这是情况,
就所有意图而言,它们是相同的。只要导入Foundation
,编译器将把它们视为相同的东西。
至于具体差异,因此苹果文档有所帮助。
概述
NSObject
是大多数Objective-C类层次结构的根类。通过NSObject
,对象继承了一个基本接口到运行时系统和作为Objective-C对象的能力。
简而言之,这意味着NSObjects
是来自旧时(objective c)的古老遗物。
至于哪个更好,这取决于您。我发现Swift对象比ns对应物更好,仅用于保持代码现代化,但如果您使用像NSURLCONNECTION
这样需要ns对象的代码,则可能必须使用ns对象。
希望这可以帮助你。
let dataArray = NSMutableArray()
let d0 = ["code":"AA","name":"American Airlines"]
let d1 = ["code":"BA","name":"British Airlines"]
let d2 = ["code":"DA","name":"Delta Airlines"]
dataArray.addObject(d0)
dataArray.addObject(d1)
dataArray.addObject(d2)
let d0 = dataArray.objectAtIndex(0) as! [String:String]
let lbl = UILabel()
lbl.text = d0["code"] // no xcode warnings
let d0 = dataArray.objectAtIndex(0) as! NSDictionary
lbl1.text = d0["name"] as! String
if let results = json["result"] as? NSDictionary
results["code"] = 100 // <-- BOOM
let mResults = NSMutableDictionary(dictionary:results)
mResults["code"] = NSNumber(100) // <-- OK
Dictionary
是一个结构体而非类。 - newacct