无法在缓存中找到具有标识符 - id - 的可缓存对象

时间:2018-03-07 13:08:53

标签: ios sirikit

我正在尝试在我的应用中为Siri实施INCreateNoteIntent。 Siri解决了所有需要的内容,她通过确认,并通过处理意图方法,这一切都有效,但Siri的最终回应是:

抱歉,该应用存在问题

控制台日志中打印的是:

[Intents] -[INCache cacheableObjectForIdentifier:] Unable to find cacheable object with identifier 5BCBE5F9-5DD6-4E63-AF5C-F3863BF56ECD in cache.

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用INCreateTaskListIntent时遇到了同样的问题。也许你和INCreateNoteIntent有类似的问题?

事实证明,在handle方法中创建的最终响应中,您必须为响应分配一个新的INTaskList对象,否则它不是有效的成功响应(即,成功的回复必须设置createdTaskList字段。也许你的笔记问题很相似?

以下是修复前后代码的示例:

之前(我没有创建和设置任务列表):

func handle(intent: INCreateTaskListIntent, completion: @escaping (INCreateTaskListIntentResponse) -> Void) {
    guard let title = intent.title else {
        completion(INCreateTaskListIntentResponse(code: .failure, userActivity: nil))
        return
    }

    print("Creating task list called \(title)")
    let response = INCreateTaskListIntentResponse(code: .success, userActivity: nil)
    completion(response)
}

之后(我设置任务列表):

func handle(intent: INCreateTaskListIntent, completion: @escaping (INCreateTaskListIntentResponse) -> Void) {
    guard let title = intent.title else {
        completion(INCreateTaskListIntentResponse(code: .failure, userActivity: nil))
        return
    }

    print("Creating task list called \(title)")
    let taskList = INTaskList(
        title: title,
        tasks: [],
        groupName: nil,
        createdDateComponents: nil,
        modifiedDateComponents: nil,
        identifier: "superduperlist"
    )
    let response = INCreateTaskListIntentResponse(code: .success, userActivity: nil)
    response.createdTaskList = taskList
    completion(response)
}

答案 1 :(得分:0)

我遇到了同样的问题,显然你需要在.entitlements文件中添加一个App Groups键类型数组,其中包含一个字符串类型的项目,其自定义ID为你的

Image of .entitlements file