NSScanner是否适用于Swift Strings?

Nar*_*hal 9 nsstring nsscanner swift xcode6 ios8

我想知道为什么这样做(注意我使用的是NSString类型):

    let stringToSearch:NSString = "I want to make a cake and then prepare coffee"
    let searchTerm:NSString = "cake"
    let scanner = NSScanner(string: stringToSearch)
    var result:NSString? = nil
    scanner.scanUpToString(searchTerm, intoString:&result)
    println(result) // correctly outputs "I want to make a"
Run Code Online (Sandbox Code Playgroud)

但如果我尝试使用"String"类型而不是"NSString",则无法编译:

    let altStringToSearch:String = "I want to make a cake and then prepare coffee"
    let altSearchTerm:String = "cake"
    let altScanner = NSScanner(string: altStringToSearch)
    var altResult:String? = nil
    altScanner.scanUpToString(altSearchTerm, intoString:&altResult)
    println(result)
Run Code Online (Sandbox Code Playgroud)

错误说"无法转换表达式的类型'BOOL'来输入'inout String?' 在scanUpToString行上.我不确定它甚至指的是什么BOOL.

那么,NSScanner不能与Swift String类型一起使用吗?是否有我应该使用的新命令?

Ada*_*dam 14

scanUpToString方法的第二个参数必须是指向a的指针NSString.其他参数可以String.此代码将起作用:

let altStringToSearch:String = "I want to make a cake and then prepare coffee"
let altSearchTerm:String = "cake"
let altScanner = NSScanner(string: altStringToSearch)
var altResult:NSString?
altScanner.scanUpToString(altSearchTerm, intoString:&altResult) // altResult : "I want to make a "
Run Code Online (Sandbox Code Playgroud)