将 iOS 模型 Backbone-ify 化,使其与 RESTful API 通信变得异常容易。提供方便的 API 用于连接、通信和返回成功失败事件。
为了使其正常工作,您还需要执行一个步骤。向您的项目中添加一个名为 'Environment.plist' 的文件。在那里,您需要指定您要使用的不同 API 环境。
现在最后,向您的应用的 plist 中添加一个 '配置' 参数。
# support/appName.plist
Configuration (String) 'dev(or whatever you named your environment you want to use)'
Chocobo 允许您轻松地在 iOS 应用中创建异步模型/集合,以便与 RESTful API 通信。
从 Model 对象扩展模型,并使用属性指定所有属性。
@interface User : Model
@property (nonatomic, copy) NSNumber *userId;
@property (nonatomic, copy) NSString *firstName;
@property (nonatomic, copy) NSString *lastName;
@property (nonatomic, copy) NSString *email;
@end
然后您将需要重写模型的 'updateModelWithJson:' 方法
-(void) updateModelWithJson:(NSDictionary *)json
{
NSDictionary *attributes = [json valueForKey:@"user"];
self.userId = [attributes valueForKey:@"id"];
self.firstName = [attributes valueForKey:@"first_name"];
self.lastName = [attributes valueForKey:@"last_name"];
self.email = [attributes valueForKey:@"email"];
}
现在您可以调用
[self fetchFromEndpoint:@"login.json" withParams:parameters onSuccess:^(id responseObject) {
NSLog(@"Do Something with your response object here");
} onFailure:^(NSError *error) {
NSLog(@"Do something with the error");
}];
集合将扩展 Collection 对象。
#import "Collection.h"
@interface Users : Collection
@end
您的集合需要重写两个函数
-(id)model
{
return @"User";
}
-(NSString *)collectionEndpoint
{
return @"users.json";
}
这样就可以让集合自动从集合端点获取所有模型,并将它们设置在模型的数组中。
在集合中访问模型非常简单。只需使用 models 访问器即可。
[[collection models] objectAtIndex: 0];
在您的模型中设置多对多关系很简单。在要设置关系的模型类型上设置一个 NSMutableArray 属性。
# models/user.h
@property (nonatomic, retain) NSMutableArray *accounts;
在 updateModelWithJson: 函数内部循环合成和设置关系
# models/user.m
@synthesize wells = _wells;
-(void) updateModelWithJson:(NSDictionary *)json
{
for (NSDictionary* key in [json valueForKey:@"accounts"]) {
Account *accountModel = [[Account alloc] init];
[accountModel updateModelWithJson:key];
[self.accounts addObject:account];
}
}
为了在模型中设置一对一关系,在模型上设置一个与您想要设置的类型的属性。
# models/user.h
#import 'Account.h'
@property (nonatomic, retain) Account *account;
然后,在 updateModelWithJson 中
# models/user.m
-(void) updateModelWithJson:(NSDictionary *)json
{
Account *account = [[Account alloc] init];
[account updateModelWithJson: [json valueForKey:@"account"]];
self.account = account;
}
** Creative Commons 3.0 - 通过相同方式共享**
您可以混合、复制或用于商业和非商业产品和服务的用途,但需要在源代码中提供对原始工作的原始作品 "PetroFeed Inc." 的归属。您还必须按照相同的许可证共享原始作品或任何衍生作品。许可证的描述可以在 此处 找到。
感谢 PetroFeed 带来。