使用RestKit拉2个API

时间:2014-02-22 22:30:05

标签: ios objective-c api restkit

我需要帮助使用RestKit提取两个API。

我已经建模了API1,并且已经正确拉入。

问题在于试图弄清楚如何将API2拉入ViewController

具体来说,我已经设置了模型类,但是在将显示API1 + API2结果的ViewController中,我无法弄清楚如何将其用于viewDidLoad。< /强>

谢谢!

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // RestKit
    NSString *baseURL = @"http://api.firstwebsite.com/v1";
    RKObjectManager *manager = [RKObjectManager sharedManager];

    if (!manager) {
        manager = [RKObjectManager objectManagerWithBaseURLString:baseURL];
        manager.client.serviceUnavailableAlertEnabled = YES;
        manager.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
    } else {
        manager.client.baseURL = [RKURL URLWithString:baseURL];
    }

    return YES;
}

WebListViewController.m

@property (strong, nonatomic) NSArray *hArray;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[RKObjectManager sharedManager] loadObjectsAtResourcePath:
    [NSString stringWithFormat:
    @"/something/?limit=100&something=%@&something=%@&apikey=xxxx", var1, var2]
    usingBlock:^(RKObjectLoader *loader) {
        loader.onDidLoadObjects = ^(NSArray *objects){

            hArray = objects;

            [_tableView reloadData];

        };
        [loader.mappingProvider setMapping:[Fe mapping] forKeyPath:@"fe"];
        loader.onDidLoadResponse = ^(RKResponse *response){
            //NSLog(@"BodyAsString: %@", [response bodyAsString]);
        };
    }];
}

1 个答案:

答案 0 :(得分:0)

提醒您的视图控制器(和应用程序委托)远离数据来源的知识 - 他们没有业务知识。应用代表不应该对此有任何了解。视图控制器应该知道数据存在并且可以请求其他数据,但这应该是内部应用程序数据模型,而不是外部模型或数据源。

所以,创建一个数据控制器。通常是单身人士。根据设置标准提供接口以获取/设置/请求/更新数据模型。将所有调用视为与完成回调块异步。

在内部,这个数据控制器可以管理多个对象管理器,每个对象管理器都有不同的基本URL,映射和描述符,但这都是内部知识。