我是新来的,所以请帮我解决这个问题。我想知道为什么Swift同时拥有NSDictionary和Dictionary类?我的问题也适用于其他标准类,如String / NSString,Array / NSArray等。我问这是因为我的代码有问题,不得不做很多演员。
例如,我找到了仅在NSDictionary contentsOfFile
中将plist文件加载到字典中的方法,而不是在本机Dictionary类中,后者是与Swift一起使用的'广告'方式。
这是一个实现问题(Swift是新的还是全部)还是有更多,更深层次的理由来使用旧的Objective-C类?有什么区别?
答案 0 :(得分:2)
两种类型都是为了在swift中使用Objective-C代码。 Swift数组和字典是泛型类型,可以容纳非类实例(enum
,struct
),而NSArray
/ NSDictonary
只能容纳NSObject
。
答案 1 :(得分:2)
为了简化您的问题,我们举一个NSString的例子
NSString在iOS开发中已经很长时间了,它是String的前身
String是新的Swift特定字符串类,其中NSString是较旧的目标C版本,并且有一种方法可以在两者之间进行转换或桥接,
根据Apple“整个NSString API可用于调用您创建的任何String值”
现在为什么要这样做,因为String类当前不一定拥有NSString上的所有方法,所以如果你想使用NSString方法,你可以将String转换为NSString并利用这些方法
例如
// Double conversion
var strCon = Double(("3.14" as NSString).doubleValue)
// Contains String
var stack = "Stack overflow"
(stack as NSString).containsString("Stack")
// Substring
var overflow = (stack as NSString).substringToIndex(8)
简而言之,如果你正在尝试做某事并且似乎没有方法可用于String我建议看一下NSString,因为那里有很多方法,很有可能它会帮助你
NSDictionary,NSArray等的情况也是如此...... 我希望它有所帮助