ios - Swift - 使用哪些类型? NSString 或字符串

随着 Swift 的引入,我一直在尝试了解新语言

我是一名 iOS 开发人员,会在应用程序中使用 NSString、NSInteger、NSDictionary 等类型。我注意到在 Apple 的“The Swift Programming Language”电子书中,他们使用了 Swift 类型 String, Int, Dictionary

我注意到 Swift 类型没有(或名称不同)Foundation 类型所具有的某些功能。例如 NSString 有一个 length 属性。但我一直无法为 Swift String 找到类似的。

我想知道,对于 iOS 应用程序,我是否仍应使用 Foundation 类型?

最佳答案

您应该尽可能使用 Swift 原生类型。该语言已针对使用它们进行了优化,并且大部分功能都在 native 类型和 Foundation 类型之间架起了桥梁。

虽然 StringNSString 大部分是可以互换的,也就是说,您可以将 String 变量传递给采用 NSString 的方法> 参数,反之亦然,目前某些方法似乎没有自动桥接。见 this answer讨论如何获取字符串的长度和 this answer有关使用 containsString() 检查子字符串的讨论。 (免责声明:我是这两个答案的作者)

我还没有完全探索过其他数据类型,但我假设上面所说的某些版本也适用于 Array/NSArrayDictionary /NSDictionary,以及 Swift 和 NSNumber

中的各种数字类型

当您需要使用其中一种 Foundation 类型时,您可以使用它们来显式键入变量/常量,如 var str: NSString = "An NSString" 或使用 bridgeToObjectiveC () 在 Swift 类型的现有变量/常量上,例如在 str.bridgeToObjectiveC().length 中。您还可以使用 str as NSStringString 转换为 NSString

但是,这些技术显式使用 Foundation 类型或至少其中一些类型的必要性在未来可能会过时,因为根据语言引用中的说明,String/NSString 例如,桥应该是完全无缝的。

有关该主题的详细讨论,请参阅 Using Swift with Cocoa and Objective-C: Working with Cocoa Data Types

https://stackoverflow.com/questions/24038629/

相关文章:

ios - UILabel minimumScaleFactor 是如何工作的?

ios - 如何在 UITextView 中禁用复制、剪切、选择、全选

iphone - 我什么时候应该在 -(void)viewDidUnload 而不是 -deallo

ios - AVAudioPlayer 在 Debug模式下抛出断点

ios - 获取 UITableView 的 Selected 索引

iphone - 如何将 UIImage 保存到文件中?

ios - 带有两种不同颜色文本的 UILabel

ios - 如何在 xcode 中以编程方式向按钮添加操作

objective-c - 如何获取 NSString 的前三个字符?

objective-c - 如何从 NSSet 返回 NSMutableArray