我正在创建一个简单的语言标记器应用程序,它需要用户输入并提供标记和标记。它在模拟器中工作正常但是当我在我的设备中运行它时,它不会做同样的事情。
这是我用过的代码:
@IBAction func callML(_ sender: Any) {
let entryString = self.entryField.text!
print(entryString)
self.view .endEditing(true)
let schemes = NSLinguisticTagger.availableTagSchemes(forLanguage: "en-IN")
let options: NSLinguisticTagger.Options = [
.omitWhitespace, .omitPunctuation, .joinNames
]
let tagger = NSLinguisticTagger(tagSchemes: schemes, options: Int(options.rawValue))
tagger.string = entryString
let rangeOfEntireEntryString = NSRange(location: 0, length: entryString.utf16.count)
tagger.enumerateTags(
in: rangeOfEntireEntryString,
scheme: .nameTypeOrLexicalClass,
options: options)
{ (tag, tokenRange, sentenceRange, _) in
guard let tag = tag?.rawValue else { return }
let token = (entryString as NSString).substring(with:
tokenRange)
print("[\(tag)] \(token)")
if tag.count==12{
print("This is for personal name")
print(token)
name=token
}
}
}
当我在控制台中打印标签和标记时,它只提供普通文本而不是我从模拟器获得的文本。
输入文字字段:与男人见面
使用模拟器时在控制台中输出:
[Verb] meet
[Determiner] the
[Noun] man
使用设备时在控制台中输出:Meet the Man