我如何使用 PodioKit 和 PKTSearchAPI 在 Podio App 中进行搜索?
How can I search within a Podio App using PodioKit and PKTSearchAPI?
我正在尝试对跑道应用程序中的所有项目进行简单查询。但我不明白如何访问搜索请求的结果。这是我拥有的:
let query = PKTSearchQuery.init(text: "search term")
let search = PKTSearchAPI.requestToSearchInAppWithID(1234567, query: query, offset: 0, limit: 30)
requestToSearchInAppWithID
创建一个 PKTRequest
对象,因此似乎需要通过 PKTResponse
对象返回一些东西。我知道 PodioKit 中的所有内容都是异步的,here for Objective-C and here 为 Swift 给出的示例清楚地说明了如何使用 onComplete
、onSuccess
、onError
完成块接收响应, 但 PKTSearchAPI
似乎缺少完成块。
如有任何帮助,我们将不胜感激。
您在文档中注意到的完成块可在任何 PKTAsyncTask
上访问
要检索给定 PKTRequest
对象的 PKTAsyncTask
,您可以使用 PKTClient
的 performRequest
方法。例如,以下代码片段将执行您的搜索请求,然后将结果打印到控制台:
let query = PKTSearchQuery.init(text: "search term")
let search = PKTSearchAPI.requestToSearchInAppWithID(1234567, query: query, offset: 0, limit: 30)
let searchTask = PKTClient.currentClient().performRequest(search)
searchTask.onComplete { [weak self] response, error in
let body = response.body as! [String: AnyObject]
let items = body["results"] as? [[NSObject:AnyObject]]
for item in items! {
print("Search result \(item["rank"]!) title: \(item["title"]!)")
}
}
编辑:有关搜索响应中预期数据的更多信息,请参阅 Podio API Docs for Search
我正在尝试对跑道应用程序中的所有项目进行简单查询。但我不明白如何访问搜索请求的结果。这是我拥有的:
let query = PKTSearchQuery.init(text: "search term")
let search = PKTSearchAPI.requestToSearchInAppWithID(1234567, query: query, offset: 0, limit: 30)
requestToSearchInAppWithID
创建一个 PKTRequest
对象,因此似乎需要通过 PKTResponse
对象返回一些东西。我知道 PodioKit 中的所有内容都是异步的,here for Objective-C and here 为 Swift 给出的示例清楚地说明了如何使用 onComplete
、onSuccess
、onError
完成块接收响应, 但 PKTSearchAPI
似乎缺少完成块。
如有任何帮助,我们将不胜感激。
您在文档中注意到的完成块可在任何 PKTAsyncTask
要检索给定 PKTRequest
对象的 PKTAsyncTask
,您可以使用 PKTClient
的 performRequest
方法。例如,以下代码片段将执行您的搜索请求,然后将结果打印到控制台:
let query = PKTSearchQuery.init(text: "search term")
let search = PKTSearchAPI.requestToSearchInAppWithID(1234567, query: query, offset: 0, limit: 30)
let searchTask = PKTClient.currentClient().performRequest(search)
searchTask.onComplete { [weak self] response, error in
let body = response.body as! [String: AnyObject]
let items = body["results"] as? [[NSObject:AnyObject]]
for item in items! {
print("Search result \(item["rank"]!) title: \(item["title"]!)")
}
}
编辑:有关搜索响应中预期数据的更多信息,请参阅 Podio API Docs for Search