2014-09-28 64 views
0

我有一个应用程序需要使用AFNetworking,我遇到了异步操作的问题。我知道这里有很多类似的问题,但我还没有找到我的问题的答案。等待AFNetworking操作登录

应用程序调用的登录方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

这种方法看起来是这样的:

- (void)loginWithUsername:(NSString *)username password:(NSString *)password { 
    url = [NSURL URLWithString:@"Users/Login/" relativeToURL:baseURL]; 
    NSDictionary *parameters = @{UsernameParameter: username, PasswordParameter: password}; 
    [requestManager GET:url.absoluteString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     user = [[User alloc] initWithServerResponse:responseObject]; 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(error.description); 
    }]; 
} 

响应包含一对夫妇的授权令牌所必需的所有其他呼叫远程API的。问题在于,在收到登录响应并执行成功或失败块之前,其他操作正在执行。因此,当应用程序试图再次调用API时,该应用程序崩溃(或者,如果我检查无用户,则不执行任何操作)。在继续之前确保接收登录响应的最佳方法是什么?

谢谢。

回答

0

在用户的登录呼叫之后(在该块中)做另一个远程API的调用。
例如

NSDictionary *parameters = @{UsernameParameter: username, PasswordParameter: password}; 
[requestManager GET:url.absoluteString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    user = [[User alloc] initWithServerResponse:responseObject]; 
    ///insert another remote api here. 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(error.description); 

    ///warnning for error. 
}]; 
+0

我决定在我看到您的建议之前再试一次。这似乎有伎俩。第一次尝试时它没有工作,所以我第一次肯定有错误。谢谢。 – 2014-09-28 04:43:20