【发布时间】:2019-07-03 13:41:11
【问题描述】:
在我的应用中,用户可以通过 Sirikit 将任务添加到列表中(例如 Siri 意图查询:“在 MyApp 中添加到费用列表 100 美元的牛仔裤”)。如果建议的列表在应用程序中不可用,我要求消除歧义。
resolveTargetTaskList 中未捕获多选消歧的结果。
intent.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。