Swift 3.0 中的 Objective C 代码

Posted

技术标签:

【中文标题】Swift 3.0 中的 Objective C 代码【英文标题】:Objective C code in Swift 3.0 【发布时间】:2016-09-19 12:13:54 【问题描述】:

我一直在尝试将一段代码从 Objective C 转换为 Swift 3.0 语法,但没有成功。请在下面找到目标 c 代码。

目标 C

 NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "] invertedSet];

 NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];

这是我尝试过的,

Swift 3.0

let invalidCharSet : NSCharacterSet = NSCharacterSet.init(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ").inverted as NSCharacterSet

let filtered = (replacementString.components(separatedBy: invalidCharSet)as NSArray).componentsJoined(by: "")

第二条语句(即filtered = ..)给出以下错误,

错误

'components' 产生 '[String]',而不是预期的上下文结果 输入“NSArray”

【问题讨论】:

不要使用 NSArray,使用 Swift 数组并在其上调用 .joined。 尝试了这两个建议...都不起作用 【参考方案1】:

不要使用 NSArray,使用 Swift 数组并在其上调用 .joined。作为一般规则,在 Swift 中,尽量避免使用 Foundation,最好使用 Swift 自己的类型化工具。

let invalidCharSet = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ").inverted

let filtered = replacementString.components(separatedBy: invalidCharSet).joined(separator: " ")

【讨论】:

很棒的家伙...谢谢:)

以上是关于Swift 3.0 中的 Objective C 代码的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

Swift中的Objective C Setter覆盖

无法从Objective C中的swift类调用方法

浅谈Swift 2中的Objective-C指针

Swift 项目中的 Objective C pod - 正确的桥接头?