1

我想使用这个函数的原型向 SiriKit 添加词汇。Apple 的文档显示了以下示例代码:

let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName)

根据文档,我需要NSOrderedSetself.sortedWorkoutNames().

如何声明它并用数组设置它Strings

编辑:关于上下文项目,我将 Intents 与 Siri 一起使用。这里的目标是使用“Benchpress”或“Chicken”之类的特定词来启动我的锻炼应用程序,并使用已经实现的 INStartWorkoutIntent 并像魅力一样工作。

4

1 回答 1

4

如果您查看 Apple 的 SiriKit 示例代码,您可以知道他们的函数sortedWorkoutNames()返回一个NSOrderedSet. 查看workoutNamesObjective-C版本中的类型:

NSOrderedSet* workoutNames = [self sortedWorkoutNames];

在斯威夫特那将是

let workoutNames: NSOrderedSet = self.sortedWorkoutNames()

如果您有一个要传递给的数组,INVocabulary.setVocabularyStrings(_:of:)则需要将其转换为有序集。正如@larme 在他的评论中所说, NSOrderedSet 有一个将数组作为输入的初始化程序。

您的代码可能如下所示:

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

let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(myVocabSet, of: .workoutActivityName)
于 2017-04-05T11:06:14.007 回答