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 类