В моем приложении пользователи могут добавлять задачи в списки через Sirikit (пример запроса намерения Siri: «В MyApp добавьте в список расходов 100 долларов на джинсы»). если предлагаемый список недоступен в приложении, я прошу устранения неоднозначности.
результат множественного выбора в устранении неоднозначности не фиксируется в resolveTargetTaskList.
намерение.targetTaskList?.title — это значение, которое я передал с первой попытки. в результате он входит в бесконечный цикл.
func resolveTargetTaskList(for intent: INAddTasksIntent, with completion: @escaping (INTaskListResolutionResult) -> Void) {
guard let title = intent.targetTaskList?.title else {
completion(.needsValue())
print("no title value")
}
completeResolveTaskList(listName: intent.targetTaskList!.title, with: completion)
}
public func completeResolveTaskList(listName: INSpeakableString, with completion: @escaping (INTaskListResolutionResult) -> Void) {
print("completeResolveTaskList")
let allLists = getAllLists()
for index in 0...(allLists.count - 1) {
if allLists[index].spokenPhrase.lowercased() == listName.spokenPhrase.lowercased() {
completion(.success(with: taskLists[index]))
}
}
switch allLists.count {
case 0:
completion(.unsupported())
default:
completion(.disambiguation(with: taskLists))
}
}
скриншот для справки:
Помогите мне, пожалуйста.
title
иspokenPhrase
? В качестве примечания: при использованииguard let title = ...
вам не нужно позже принудительно распаковывать его из targetTaskList, просто используйтеtitle
напрямую. - person Gero   schedule 09.07.2019