我正在尝试在Swift 3.2项目中使用NSLinguisticTagger for macOS。
这段代码在Swift 4中运行良好
let tagger = NSLinguisticTagger(tagSchemes: [.nameType], options: 0) // edited
但是,给出错误:
类型'String'没有成员'nameType'//已编辑
在Swift 3.2项目中。我试图遵循旧的NSLinguisticTagger教程,但我找不到'.name'部分的替代品。有可能解决这个问题,或者我必须将项目更新为Swift 4吗?
首先,我需要道歉,我首先写了一个答案,但没有确认我的设置是否正确。以下说明根据我认为正确的设置进行了更新。 (Xcode 9.2,目标Swift版本设置为3.2。更改项目Swift版本不会影响目标Swift版本,哦,我的耻辱......)
当你想使用旧的Swift版本时,一些Swift友好的包装器类型不可用,API和常量是从Objective-C世界导入的,具有简单的规则。在这种情况下,您需要重新解释具有此类规则的Objective-C版本的引用。
正如您在上面的链接文章中看到的那样,NSLinguisticTagScheme
只是String
的一个类型,常量被命名为NSLinguisticTagSchemeNameType
,如问题链接中的文章所示。它们在旧的Swift版本中按原样导入。
所以,这在Swift 3.2中编译:
let tagger = NSLinguisticTagger(tagSchemes: [NSLinguisticTagSchemeNameType], options: 0)
(尽管如此,我强烈建议你转移到Swift 4.由于Apple的官方参考是基于最新版本的Swift,它是Swift 4.)