在 Swift 3.2 项目中实现 NSLinguisticTagger 时出现 ‘no member nameType’ 错误

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

以下代码在 Swift 4 中运行良好

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

但在 Swift 3.2 项目中会出现以下错误:

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

enter image description here

我在 Swift 3.2 项目中尝试按照旧的 NSLinguisticTagger 教程操作,但找不到 ‘.name’ 部分的替代方案。是否有办法修复这个问题,还是我必须将项目更新到 Swift 4?

NSLinguisticTagger 文档

NSHipster NSLinguisticTagger 2012 教程


回答:

首先,我需要道歉,因为我最初在没有确认我的设置是否真的正确的情况下写了一个答案。以下描述是基于我认为正确的设置更新的。(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。因为苹果的官方参考资料是基于最新版本的 Swift,即 Swift 4。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注