2012-10-30 59 views
0

此問題是關於將自定義對象中的RestKit請求封裝起來的,以及是否可以保證發送RestKit請求的對象也將用作委託返回。如何保證特定的代理將處理RestKit響應

我正在使用深奧的REST API(Salesforce),而RestKit似乎無法很好地處理Salesforce的一些特性 - 例如,當您撥打Salesforce REST API時,可能會返回一個部分數據集,然後得到一個「nextRecordsUrl」,你必須遵循才能獲得下一個塊。其他與Salesforce和REST一起工作的人遇到了同樣的問題(參考號https://groups.google.com/forum/#!msg/restkit/HJNjB7I6WVM/8u5n7nHoJQUJ)。我創建了一個類來包裝對Salesforce的調用並自動遵循這些鏈接,並正確處理返回的數據集。類實例將自己註冊爲REST調用的委託。

我寫的類自己做的很好(當只有一個實例的時候),但是我將創建其他類並且有多個實例需要獨立處理它們的數據。我已經閱讀了文檔和代碼(這是一個學習經驗,我只在ios上工作了大約一個月),但是我不能確定是否可以確保某個特定實例將作爲其代理進行響應請求單獨提供,或者它可能意外地爲另一個實例提供響應。

例如,假設我有實例A和B,它們都使用RKObjectLoader發出請求,並使用loader.delegate = self;將它們自己設置爲委託。兩者同時運行(異步)。這裏的一個勢流予見:

  1. A的RKObjectLoader進行呼叫,用於響應寄存器自身作爲代表
  2. RestKit框架發送請求對於A
  3. B的RKObjectLoader進行呼叫,用於響應寄存器自身作爲代表
  4. RestKit框架發送請求B
  5. ...等待...
  6. RestKit框架獲取響應,並以某種方式確定此響應來自B的請求,cal林志玲B爲代表
  7. 乙委託方法被調用
  8. RestKit框架得到響應,並以某種方式確定該響應來自A的請求,稱A爲代表
  9. 委託方法被調用

我看不到RestKit框架如何區分來自請求的響應,從而確保調用正確的委託實例。換句話說,在我看來,RestKit可能會得到對請求的響應,然後調用它想要的任何委託......但這似乎違反直覺,框架作者似乎非常尖銳。

所以,我的問題:

  1. 如果我有使用RKObjectLoader和設置本身作爲委託,我可以保證的是,當該請求的響應進來它會被稱爲一個類的實例?
  2. 您能否指出我在RestKit框架中的實際實現來處理這個問題,所以我可以瞭解它是如何完成的?

非常感謝!

回答

0

我還沒有收到這個問題的答案,但如果有人有同樣的問題,並遇到這個問題,這裏的答案是:是的,RestKit確實似乎匹配正確的代表與傳出的請求。我創建了一個小類(帶有一個調用服務的(NSString *)標識符屬性,並在代理中打印出實例的標識符和結果。我確認實例A的委託方法處理實例A的調用,並且B正在處理B's,同時撥打幾個電話。