从新创建的salesforce对象中检索对象ID

时间:2015-11-26 22:59:47

标签: swift salesforce

我正在尝试使用Salesforce SDK创建父对象及其子代。据我所知,在一个操作中无法做到这一点,所以我需要先创建父对象,然后逐个创建每个子对象。

我的问题是我不确定如何获取新创建的父对象的id,我需要创建它的子对象。我知道SFRestDelegate方法request:didLoadResponse:中返回的响应包含id,但我不确定如何在我的create函数中捕获它。

let api = SFRestAPI.sharedInstance()

var parent = [NSObject : AnyObject]()
parent["Field1__c"] = "Test"
parent["Field2__c"] = "Test"

let createRequest = api.requestForCreateWithObjectType("Parent_Object__c", fields: parent)
api.send(createRequest, delegate: self)

// Need wait for response before continuing...???
// id = ??

for var i = 0; i < 3; ++i {
    let child = ["Test_Object__c": id, "Name": "Child1\(i)"]
    let createRequest = api.requestForCreateWithObjectType("Parent_Object__c", fields: child)
    api.send(createRequest, delegate: self)
}

我认为必须有一种更有效的方法来做到这一点,但如果有的话,我还没有在文档中找到它。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您已将委托设置为self,因此您现在需要做的就是实际提供这意味着的方法(即请求的处理程序)。在此对象内部实现以下四种方法:

func request(request: SFRestRequest?, didLoadResponse jsonResponse: AnyObject) {

    var records = jsonResponse.objectForKey("records") as! NSArray
    //do stuff with your records
    //call createChildRecords method here. You can extract the id from the records object above.
}

func request(request: SFRestRequest?, didFailLoadWithError error:NSError) {
    println("In Error: \(error)")
}

func requestDidCancelLoad(request: SFRestRequest) {
    println("In requestDidCancelLoad \(request)")
}


func requestDidTimeout(request: SFRestRequest) {
    println("In requestDidTimeout \(request)")
}

请求后面的for循环应该是另一种方法,您可以从作为委托协议一部分实现的成功加载方法调用。