Ios Swift 3-如何声明一个SensorDeredSet以使用setVocabularyStrings?

Ios Swift 3-如何声明一个SensorDeredSet以使用setVocabularyStrings?,ios,swift,sirikit,nsorderedset,Ios,Swift,Sirikit,Nsorderedset,我想使用函数的原型为SiriKit添加词汇表。苹果的文档显示了以下示例代码: let workoutNames = self.sortedWorkoutNames() let vocabulary = INVocabulary.shared() vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName) 根据,我需要为self.sortedWorkoutNames()使用SensorDeredSet类型 如何声

我想使用函数的原型为SiriKit添加词汇表。苹果的文档显示了以下示例代码:

let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName)
根据,我需要为
self.sortedWorkoutNames()
使用
SensorDeredSet
类型

如何声明它并使用
字符串数组设置它


编辑:关于上下文项目,我将意向与Siri一起使用。这里的目标是使用“Benchpress”或“Chicken”这样的特定单词来启动我的健身应用程序,而InstartWorkoutinet已经实现并像一个魔咒一样工作。

如果你看一下苹果SiriKit的示例代码,你可以知道它们的函数
sortedWorkoutNames()
返回一个
sensorderedSet
。查看Objective-C版本中的
workoutNames
类型:

NSOrderedSet* workoutNames = [self sortedWorkoutNames];
在斯威夫特,那将是

let workoutNames: NSOrderedSet = self.sortedWorkoutNames()
如果您有一个数组要传递给
INVocabulary.setVocabularyStrings(:of:)
,则需要将其转换为有序集。正如@larme在他的评论中所说的,deredset有一个以数组作为输入的初始值设定项

您的代码可能如下所示:

let myVocab = ["Benchpress", "Squats", "Deadlift"]
let myVocabSet = NSOrderedSet(array: myVocab) //Convert myVocab to an NSOrderedSet

let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(myVocabSet, of: .workoutActivityName)

有一个
便利init(数组:[Any])
。比如:
让workoutNames=sensordered.init([“word1”,word2“])
?感谢您的回复,但它不起作用……”它不起作用了“令人发狂地缺乏信息。当某些东西不起作用时,请说明您遇到的具体错误,或者它如何无法满足您的需要。谢谢您的回答!我在GitHub上发现了类似的一个,但我有一些问题,即使使用您的,关于“setVocabularyStrings”,Xcode告诉我:“setVocabularyStrings(u:of:)”不可用:INVocabulary对扩展不可用。主应用程序负责提供所有词汇。“我是否错过了导入或其他功能?”?我当前的导入是UIKit和Intents。“不可用于扩展”?您正在尝试编写应用程序扩展?您需要对您的问题提供更完整的描述。请返回并编辑您的问题以提供更多背景。我这样做是有意的。等等,我会编辑我的主要问题。完成了,很抱歉搞砸了。我以前没用过SiriKit。我的信息是基于阅读文档。如果你试图从应用程序扩展中添加词汇,那么听起来你运气不好。