我首先要說的是,我真的很新(大約兩天)到iPhone dev和Objective-C。我仍然習慣的語法,內存管理等。如何實現一個簡單的RestKit回調接口?
我想使用RestKit與允許JSON REST請求的服務器進行交互。發出GET請求後,我得到了形式的數據:
GET : /api/beast/1/
{
'species' : 'elephant',
'resource_uri' : 'api/beasts/1/',
'owner' : '/api/beastmaster/3/',
'name' : 'Stampy'
}
GET : /api/beastmaster/3/
{
'resource_uri' : '/api/beastmaster/3/'
'first_name' : 'Bart',
'last_name' : 'Simpson'
}
的事情是beast
對象的owner
屬性是有時人口與資源URI字符串和有時與實際完全JSON表示對象,如下所示:
{
'species' : 'elephant',
'resource_uri' : 'api/beasts/1/',
'owner' : {
'resource_uri' : '/api/beastmaster/3/'
'first_name' : 'Bart',
'last_name' : 'Simpson'
},
'name' : 'Stampy'
}
我想要做的是提供一個易於使用的界面異步請求owner
財產,應該檢查是否它已經有了對象的完整表示,並且在這種情況下立即執行回調,或者如果沒有,則發出相應的GET請求並在響應到達時執行回調。
如果這是JavaScript的一些方式來實現,這可能是:
//Alternative 1
beast.getOwner(function(owner){
console.log("Owner is: " + owner);
});
//Alternative 2
beast.get("owner", {
'success' : function(){...},
'error' : function(){...}
});
大多數RestKit例子我見過落實協議來處理執行請求的同一對象的響應。我不喜歡這樣做,因爲在這種情況下,一個類可能需要各種相關的對象屬性(這將異步獲得)。
實現所需行爲的最佳方式是什麼?爲其他程序員提供一個簡單明瞭的界面,它將使用模型類來開發應用程序的其餘部分?也許使用塊?
,因爲我已經將其形容它不完全。一個給定的URL將始終以相同的格式返回json,事情是它只能深入一層。所以如果一個「獸王」擁有,比如說......一個「最愛」的財產。然後,'beast'的_that_表示將'owner'顯示爲一個URI。但是,如果頂層對象是「野獸」,那麼「所有者」屬性將是完整的JSON對象。這是爲了避免json上的無限循環引用。順便說一句,感謝您的鏈接,這將是有益的。 – 2012-03-13 00:55:43