Swift 3 - 如何声明 NSOrderedSet 以使用 setVocabularyStrings?
Swift 3 - How to declare an NSOrderedSet to use setVocabularyStrings?
我想使用 this 函数的原型来向 SiriKit 添加词汇。 Apple 的文档显示了以下示例代码:
let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName)
根据 documentation,我需要为 self.sortedWorkoutNames()
使用 NSOrderedSet
类型。
如何用Strings
的数组来声明和设置?
编辑:关于上下文项目,我在 Siri 中使用 Intents。这里的目标是使用像 'Benchpress' 或 'Chicken' 这样的特定词来启动我的锻炼应用程序,并且已经实现了 INStartWorkoutIntent 并且工作得很好。
如果您查看 Apple 的 SiriKit 示例代码,您可以看出它们的函数 sortedWorkoutNames()
returns 和 NSOrderedSet
。查看Objective-C版本中workoutNames
的类型:
NSOrderedSet* workoutNames = [self sortedWorkoutNames];
在 Swift 中是
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)
我想使用 this 函数的原型来向 SiriKit 添加词汇。 Apple 的文档显示了以下示例代码:
let workoutNames = self.sortedWorkoutNames()
let vocabulary = INVocabulary.shared()
vocabulary.setVocabularyStrings(workoutNames, of: .workoutActivityName)
根据 documentation,我需要为 self.sortedWorkoutNames()
使用 NSOrderedSet
类型。
如何用Strings
的数组来声明和设置?
编辑:关于上下文项目,我在 Siri 中使用 Intents。这里的目标是使用像 'Benchpress' 或 'Chicken' 这样的特定词来启动我的锻炼应用程序,并且已经实现了 INStartWorkoutIntent 并且工作得很好。
如果您查看 Apple 的 SiriKit 示例代码,您可以看出它们的函数 sortedWorkoutNames()
returns 和 NSOrderedSet
。查看Objective-C版本中workoutNames
的类型:
NSOrderedSet* workoutNames = [self sortedWorkoutNames];
在 Swift 中是
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)