stringByReplacingOccurrencesOfString不起作用?

Sun*_*der 2 objective-c swift

我正在尝试翻译这个Objective-C代码:

if ([[self.appStoreCountry stringByReplacingOccurrencesOfString:@"[A-Za-z]{2}" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, 2)] length])
Run Code Online (Sandbox Code Playgroud)

所以我试着编写这段代码:

if !self.appStoreCountry.stringByReplacingOccurrencesOfString("[A-Za-z]{2}", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: Range(start: 0, end: 2)).isEmpty
Run Code Online (Sandbox Code Playgroud)

问题是stringByReplacingOccurrencesOfString部分似乎没有返回字符串.我有来自xcode的错误消息:Cannot convert the expression's type 'Bool' to type 'String'.

我调查了一下并试了一下:

let replaced = self.appStoreCountry.stringByReplacingOccurrencesOfString("[A-Za-z]{2}", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: Range(start: 0, end: 2))
Run Code Online (Sandbox Code Playgroud)

错误消息类似但更奇怪: Cannot convert the expression's type 'String' to type 'String'.

我做错了什么,或者我应该向Apple提交错误?

Sco*_*ets 7

请记住,Foundation的类型与Swift的类型不同.StringSwift中的A 不是a NSString,而a Range不是NSRange.这确实有效:

let country = self.appStoreCountry // if self.appStoreCountry is an NSString
let country: NSString = self.appStoreCountry // if self.appStoreCountry is a Swift string

let replaced = country.stringByReplacingOccurrencesOfString("[A-Za-z]{2}", withString: "", options: .RegularExpressionSearch, range: NSMakeRange(0, 2))
Run Code Online (Sandbox Code Playgroud)

还要注意简短的符号.RegularExpressionSearch,这使得在Swift中使用枚举更容易一些.