使用iOS MobileSDK同步执行SalesForce SOQL查询

时间:2018-11-17 06:26:34

标签: ios swift promise salesforce salesforce-ios-sdk

我正在使用最新的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查询的更好方法是什么。

1 个答案:

答案 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

    }
}