Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何纠正NSLinguisticTagger函数中的错误“;类型';字符串';没有成员';令牌类型'&引用;在Mac OSX上(功能在iOS上工作)?_Swift - Fatal编程技术网

Swift 如何纠正NSLinguisticTagger函数中的错误“;类型';字符串';没有成员';令牌类型'&引用;在Mac OSX上(功能在iOS上工作)?

Swift 如何纠正NSLinguisticTagger函数中的错误“;类型';字符串';没有成员';令牌类型'&引用;在Mac OSX上(功能在iOS上工作)?,swift,Swift,我正在Mac OSX 10.13.6上使用Swift处理自然语言文本,但出现错误“Type'String'没有成员'tokenType' 为了简化,我将代码剥离,并使用苹果文档中的代码获得相同的结果。该代码在iOS 12.0和iOS 11.4上编译良好,但在Mac OSX(10.14、10.13或10.10)上编译不好 这就是问题所在。其他一切都很好: let tagger = NSLinguisticTagger(tagSchemes: [.tokenType], options: 0) 所

我正在Mac OSX 10.13.6上使用Swift处理自然语言文本,但出现错误“Type'String'没有成员'tokenType'

为了简化,我将代码剥离,并使用苹果文档中的代码获得相同的结果。该代码在iOS 12.0和iOS 11.4上编译良好,但在Mac OSX(10.14、10.13或10.10)上编译不好

这就是问题所在。其他一切都很好:

let tagger = NSLinguisticTagger(tagSchemes: [.tokenType], options: 0)
所以我也试过这个:

let tagger = NSLinguisticTagger(tagSchemes: [NSLinguisticTagScheme.tokenType], options: 0)
但是仍然得到了错误。我做错了什么

我检查了其他答案,如 哪个推荐进口基金会?我已经在做了。其他人建议对操作系统版本进行更改,这就是我关注的原因


我使用的是Xcode 10.5(beta版),但在使用Xcode 9.4.1时也有错误。如果有必要,我的mac电脑只使用英语。

您的问题在于
枚举标签(in:,unit:,scheme:,options:)
,因为它可以从IOS 11中获得,请参见中的此处


我很难过地报告,在做出改变后,我仍然有这个问题。我的部署目标是macOS 10.13。还有什么我可以试试的吗?我做错了什么?在定义tagger的行上也出现了相同的错误。@Marcy除了这个答案中指出的问题外,我无法重现任何问题。你能发布一个示例项目吗?我把这个项目放在这里有一点背景,这个项目是来自Exercism.IO的一个使用TDD的练习。因此,我不是100%清楚为什么这个项目是这样设立的。但我在过去的练习中没有遇到任何问题。马特和施汗感谢你们的投入,因为这促使我更仔细地检查项目设置。该项目的项目格式设置为Xcode 3.2兼容性,在构建设置中,Swift语言版本设置为Swift 3。将这些更改为当前版本解决了此错误。
let tagger = NSLinguisticTagger(tagSchemes: [NSLinguisticTagScheme.tokenType], options: 0)
import Foundation

struct Wordy {

    func parseWords(text: String) {
        let tagger = NSLinguisticTagger(tagSchemes: [.tokenType], options: 0)
        tagger.string = text

        let range = NSRange(location: 0, length: text.utf16.count)
        let options: NSLinguisticTagger.Options = [.omitPunctuation, .omitWhitespace]
        if #available(iOS 11.0, *) {
            tagger.enumerateTags(in: range, unit: .word, scheme: .tokenType, options: options) { _, tokenRange, _ in
                let word = (text as NSString).substring(with: tokenRange)
                print(word)
            }
        } else {
            // Fallback on earlier versions

            tagger.enumerateTags(in: range, scheme: .tokenType, options: options) { (tag, tokenRange, sentenceRange, stop) in
                let word = (text as NSString).substring(with: tokenRange)
                print(word)

            } 
        }
    }
}