我正在使用最新的Salesforce Mobile SDK来开发与CRM交互的iOS应用。
我有2个SOQL查询要同步执行,以便从第一个查询检索到的数据可以在第二个查询中使用。 Salesforce Mobile 6.1的选项如下:
let restApi = SFRestAPI.sharedInstance()
restApi.Promises.query(soql: "SELECT Id,FirstName,LastName FROM User")
.then { request in
restApi.Promises.send(request: request)
}
.done { sfRestResponse in
restResponse = sfRestResponse.asJsonDictionary()
...
}
.catch { error in
//handle error
}
但是在最新的SDK中,Promises已过时。使用最新的SalesForce Mobile SDK同步执行SOQL查询的更好方法是什么。
答案 0 :(得分:0)
Salesforce iOS SDK的6.2版使用PromiseKit来同步链接异步任务(例如Web请求)。即使他们的7.0 SDK不支持即用型,也可以将其导入以供您的项目使用:PromiseKit
如果您想使用新的7.0 SDK在本地完成相同的功能,最简单的方法是链接回调:
let queryRequestOne = RestClient.sharedInstance().buildQueryRequest(soql:"SELECT ... FROM ...")
RestClient.sharedInstance().send(request: queryRequestOne, onFailure: { (error, urlResponse) in
SFSDKLogger.sharedInstance().log(type(of:self), level:.debug, message:"Error invoking: \(queryRequestOne)")
}) { [weak self] (response, urlResponse) in
//Parse data from web response
//..
let queryRequestTwo = RestClient.sharedInstance().buildQueryRequest(soql:"SELECT ... FROM ...")
RestClient.sharedInstance().send(request: queryRequestTwo, onFailure: { (error, urlResponse) in
SFSDKLogger.sharedInstance().log(type(of:self), level:.debug, message:"Error invoking: \(queryRequestTwo)")
}) { [weak self] (response, urlResponse) in
//Parse data from web response and update UI on main thread
}
}