'没有成员nameType'错误在Swift 3.2项目中实现NSLinguisticTagger

问题描述 投票:0回答:1

我正在尝试在Swift 3.2项目中使用NSLinguisticTagger for macOS。

这段代码在Swift 4中运行良好

let tagger = NSLinguisticTagger(tagSchemes: [.nameType], options: 0) // edited

但是,给出错误:

类型'String'没有成员'nameType'//已编辑

enter image description here

在Swift 3.2项目中。我试图遵循旧的NSLinguisticTagger教程,但我找不到'.name'部分的替代品。有可能解决这个问题,或者我必须将项目更新为Swift 4吗?

NSLinguisticTagger Docs

NSHipster NSLinguisticTagger 2012 Tutorial

swift macos machine-learning nlp
1个回答
1
投票

首先,我需要道歉,我首先写了一个答案,但没有确认我的设置是否正确。以下说明根据我认为正确的设置进行了更新。 (Xcode 9.2,目标Swift版本设置为3.2。更改项目Swift版本不会影响目标Swift版本,哦,我的耻辱......)


当你想使用旧的Swift版本时,一些Swift友好的包装器类型不可用,API和常量是从Objective-C世界导入的,具有简单的规则。在这种情况下,您需要重新解释具有此类规则的Objective-C版本的引用。

NSLinguisticTagScheme

正如您在上面的链接文章中看到的那样,NSLinguisticTagScheme只是String的一个类型,常量被命名为NSLinguisticTagSchemeNameType,如问题链接中的文章所示。它们在旧的Swift版本中按原样导入。

所以,这在Swift 3.2中编译:

let tagger = NSLinguisticTagger(tagSchemes: [NSLinguisticTagSchemeNameType], options: 0)

(尽管如此,我强烈建议你转移到Swift 4.由于Apple的官方参考是基于最新版本的Swift,它是Swift 4.)

© www.soinside.com 2019 - 2024. All rights reserved.