我首先要说的是,我真的很新(大约两天)到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