ios - 使用 RestKit 进行同步 HTTP 调用

标签 ios restkit objective-c-blocks

当将用户登录到我的应用程序时,我需要仅使用用户名从服务器拉下用户对象。这将返回我进行其他 API 调用所需的 userId(除其他外)。从那时起,我将使用 userId 进行几个其他 HTTP 调用。如何在发送其他调用之前进行同步调用以完全下拉用户对象?

我已经在我的应用程序委托(delegate)类中设置了我的对象映射,它工作得很好,并且我正在使用这段代码从服务器上拉下用户对象:

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[@"/api/users/" stringByAppendingString:[_userNameField text]] delegate:self];

这是我尝试过的……如这里所建议的:Making synchronous calls with RestKit

RKObjectLoader* loader = [[RKObjectManager sharedManager] objectLoaderForObject:currentUser method:RKRequestMethodPUT delegate:nil];
RKResponse* response = [loader sendSynchronously];

然而,此代码 (1) 使用了已弃用的方法 objectLoaderForObject 并且 (2) 崩溃并提示 “无法为 HTTP 方法“POST”找到类型为“(null)”的对象的可路由路径 .

最佳答案

抛开这是否是 iPhone 应用程序的理想设计这个问题,我能够使用 block 来完成我希望的事情。

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[@"/api/users/" stringByAppendingString:[_userNameField text]] usingBlock:^(RKObjectLoader* loader) {

    loader.onDidLoadResponse = ^(RKResponse *response) {

        NSLog(@"Response: \n%@", [response bodyAsString]);
    };

    loader.onDidLoadObjects = ^(NSArray *objects) {

        APIUser *apiUser = [objects objectAtIndex:0];
        NSLog(@"user_id is %i", apiUser.user_id);


    };

    loader.onDidFailWithError = ^(NSError *error) {


            UIAlertView *badLoginAlert = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"LOGIN_FAILED", nil)
                                                                   message:NSLocalizedString(@"BAD PASSWORD OR USERNAME", nil)
                                                                  delegate:self
                                                         cancelButtonTitle:NSLocalizedString(@"OK", nil)
                                                         otherButtonTitles:nil];
            [badLoginAlert show];           
    };
}];

希望这对某人有帮助。

关于ios - 使用 RestKit 进行同步 HTTP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768287/

相关文章:

ios - 一些 Restkit 方法不可用

objective-c - RestKit:如何发布一组对象?

ios - 使用 RKEntityMapping 和 RKRelationshipMapping 获取多条记录

ios - 需要通过嵌套异步调用获得 "For Loop"的结果( Objective-C )

将麦克风输入保存到原始 PCM 文件的 iOS AudioUnit 设置

ios - UITableViewCell 不显示我设置为约束的高度

ios - 启用 Bitcode 的静态库如何不出错?

ios - 带有 block 回调的自定义 UIAlertView

Objective-C weakself 声明

iphone - 当单击按钮(单元格中的按钮)时,应该更改特定单元格?