这个问题有点宽泛,但我可以告诉你我通常是如何工作的。
我通常有一个用于 API 客户端的单例,以这种方式实现
+ (instancetype)sharedAPI {
static dispatch_once_t once;
static id _sharedInstance;
dispatch_once(&once, ^{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
然后我使用自动RestKit
将我的 REST 资源映射到CoreData
实体上。这种方法的美妙之处在于我不必手动处理CoreData
持久性,但RestKit
我在每次 API 请求时都会为我关心这一点。
我的 API 客户端所做的只是提供包装RestKit
API 的有用方法。
例如,这是我用于检索当前用户信息的 API
- (void)getCurrentUserWithSuccess:(void (^)(HSUser *))success
failure:(void (^)(NSError *))failure {
NSString * path = [NSString stringWithFormat:HS_API_USER_PATH, [HSUser currentUser].userId;
[[RKObjectManager sharedManager] getObject:nil path:path parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
HSUser * user = [mappingResult firstObject];
if (success) {
success(user);
}
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
if (failure) {
failure(error);
}
}];
}
在我的控制器逻辑中,我可以调用
[[HSAPI sharedAPI] getCurrentUserWithSuccess:^(HSUser * user) {
//do something
} failure:^(NSError * error) {
//do something else
}];
正如我之前所说,在这样的 API 调用之后,与当前用户对应的 HSUser 实例会自动持久化。
我觉得绝对方便。