【问题标题】:Execute SalesForce SOQL queries synchronously using iOS MobileSDK使用 iOS MobileSDK 同步执行 SalesForce SOQL 查询
【发布时间】:2018-11-17 06:26:34
【问题描述】:

我正在使用最新的 Salesforce 移动 SDK 开发 iOS 应用程序以与 CRM 交互。

我有 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 查询的更好方法是什么?

【问题讨论】:

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


【解决方案1】:

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

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多