为什么Swift同时拥有NSDictionary和Dictionary类?

时间:2014-10-14 11:35:07

标签: ios swift nsdictionary

我是新来的,所以请帮我解决这个问题。我想知道为什么Swift同时拥有NSDictionary和Dictionary类?我的问题也适用于其他标准类,如String / NSString,Array / NSArray等。我问这是因为我的代码有问题,不得不做很多演员。 例如,我找到了仅在NSDictionary contentsOfFile中将plist文件加载到字典中的方法,而不是在本机Dictionary类中,后者是与Swift一起使用的'广告'方式。

这是一个实现问题(Swift是新的还是全部)还是有更多,更深层次的理由来使用旧的Objective-C类?有什么区别?

2 个答案:

答案 0 :(得分:2)

两种类型都是为了在swift中使用Objective-C代码。 Swift数组和字典是泛型类型,可以容纳非类实例(enumstruct),而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等的情况也是如此...... 我希望它有所帮助

相关问题