我正在编写一个iPhone应用程序,最后我决定使用RestKit作为连接REST服务的框架.
我想构建的方式是让我的应用程序中的控制器与RestKit完全无关.例如.如果我有一个登录屏幕,在通常的RestKit场景中(基于示例程序以及RestKit开发人员创建的一些博客条目),您将让控制器实现RKRequestDelegate协议并使用RKClient在Controller传递中调用服务自我(控制者)作为代表.我想隐藏用户开发控制器和视图.
我在想的是以下内容.我将有一个登录用户的LoginService.会有协议LoginServiceDelegate,它有两个成功和失败的方法.Controller可以实现LoginServiceDelegate并在LoginService中调用login方法并获得成功或失败回调.但是要做到这一点,我需要一些方法让我的LoginService将调用委托给控制器.RestKit不允许我这样做,这是我能够通过使用LoginServiceDelegate初始化LoginService,将该委托存储为属性并在成功登录或失败时在委托中调用适当的方法来实现此目的的唯一方法.
这使我的Controller代码库保持最小,并完全隐藏了LoginService的工作方式以及它内部使用的框架.委托人的使用也使Controller与模型分离,因此我们有一个很好的MVC.但是我担心Model类保留Controller对象的含义,因为它保留在委托上.
你会如何使用RestKit?如果你认为我的方法很好,你会改变什么来改善它?如果你不喜欢我的方法,那么你会反馈为什么你觉得这不是一个好习惯.
下面的代码片段应该会给你一个更好的主意
@protocol LoginServiceDelegate;
@interface LoginService : NSObject <RKRequestDelegate>{
NSObject<LoginServiceDelegate> *_loginServiceDelegate;
}
@property (retain, nonatomic) NSObject <LoginServiceDelegate> *loginServiceDelegate;
- (id) initWithDelegate:(NSObject<LoginServiceDelegate>*) loginServiceDelegate;
- (void) login:(NSString *)username withPassword:(NSString *)password;
@end
@protocol LoginServiceDelegate
@optional
- (void) loginSuccess:(LoginInfo *) loginInfo;
- (void) loginFailure:(NSString *) message;
@end
Run Code Online (Sandbox Code Playgroud)
干杯!!!
我正在构建一个使用外部服务器存储大部分数据的iPhone应用程序.服务器使用REST API公开所有必需的服务.
理想情况下,我想在objective-c中生成可以使用这些服务的客户端代码.最好这些应该返回我可以轻松使用的对象,而不必解析返回的XML.
我在看什么选择?我已经对此进行了一些研究,并且最接近代码生成的是wsdl2objc.由于我也拥有后端服务,我可以使它们成为基于SOAP的服务,但我真的不愿意这样做,因为我稍后将使用相同的服务集来构建Web UI(例如).我有的其他选择是使用RestKit.
任何有关这方面的指导都非常感谢.我很确定这是一个很多人面临的用例,我只是找不到合适的资源或者没有找到合适的地方.
干杯!!!