swift - 在 Swift 3.2 项目中实现 NSLinguisticTagger 时出现“无成员名称类型”错误

标签 swift macos machine-learning nlp

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

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

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

但是,给出错误:

Type 'String' has no member 'nameType' // edited

enter image description here

在 Swift 3.2 项目中。我尝试按照旧的 NSLinguisticTagger 教程进行操作,但找不到“.name”部分的替代品。是否可以解决此问题,或者我必须将项目更新为 Swift 4?

NSLinguisticTagger Docs

NSHipster NSLinguisticTagger 2012 Tutorial

最佳答案

首先,我需要道歉,我在没有确认我的设置是否真的正确的情况下就写了一个答案。以下描述是根据我认为正确的设置更新的。 (Xcode 9.2,target Swift Version 设置为3.2。更改项目Swift Version 不会影响目标Swift Version,哦,我的耻辱...)


当你想使用旧的 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。)

关于swift - 在 Swift 3.2 项目中实现 NSLinguisticTagger 时出现“无成员名称类型”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055117/

相关文章:

swift - 在启动屏幕关闭后立即显示一个特定的 View Controller

macos - TTrayIcon是否适用于MacOS?

android - 在 Mac OSx 上安装 Android Studio 时缺少平台工具

swift - Apple Vision – 无法将单个数字识别为区域

ios - 如何按时间顺序对数组进行排序?

ios - UITableView 错误 : indexpath. row is starting from 1 instead of 0

Python+OpenCV+py2app : numpy. core.multiarray导入失败

machine-learning - 值错误 : Input 0 is incompatible with layer conv1d_1: expected ndim=3, 发现 ndim=4

matlab - 在 Adaboost 中标准化,无数值误差 - Matlab

使用枚举的 Swift 3 惰性缓存