Ios NSURLSession方法在登录时返回true或false
我有一个UIViewController,它调用一个web服务 为了调用该web服务,我需要首先登录。 成功登录后,我收到Ios NSURLSession方法在登录时返回true或false,ios,nsurlconnection,nsurlsession,Ios,Nsurlconnection,Nsurlsession,我有一个UIViewController,它调用一个web服务 为了调用该web服务,我需要首先登录。 成功登录后,我收到 会话cookie 用户特定数据 我需要这些数据用于以后对服务器的任何调用 因此,一种简单的方法是(伪代码): 现在,问题是,作为一个好公民,我正在远离NSURLConnection,而且NSURLSession都是异步的 基本问题是: 如何编写这样的方法: -(BOOL)Login{ --do some async stuff here --return TRU
- 会话cookie
- 用户特定数据
-(BOOL)Login{
--do some async stuff here
--return TRUE or FALSE
)
谢谢 由于异步行为,您需要一个带有完成处理程序的方法
- (void)loginWithCompletion: (void (^)(BOOL))completion {
// do some async stuff here
completion(true); // This line returns the result of the task.
}
并使用它
[self loginWithCompletion:^(BOOL result) {
NSLog(@"result: %d", result);
if (result) {
[self getSomeJsonDataForThisUser];
}
}];
如果我能得到你的问题,那么你是在问如何从NSURLSession呼叫WS。如果是,则简单地创建NSURLSession&NSURLSessionDataTask,如下所示NSURLSession*session=[NSURLSession sharedSession];NSURLSessionDataTask*dataTask=[session dataTaskWithURL:[NSURL URLWithString:@“URLStringHere”]completionHandler:^(NSData*数据,NSURResponse*响应,NSError*错误){NSDictionary*json=[NSJSONSerialization JSONObject WithData:数据选项:0错误:无];NSLog(@“%@”,json);}];对此进行了研究,但我不能在需要返回BOOL的方法中使用它。为什么不呢,您可以基于来自服务器的响应返回BOOL—(BOOL)Login{NSURLSession*session=[NSURLSession sharedSession];NSURLSessionDataTask*dataTask=[session dataTaskWithURL:[nsurlUrlWithString:@“URLStringHere”]completionHandler:^(NSData*data,NSURLResponse*response,NSError*error){if(error){return NO;}else{return YES;}}}])@Gagan_iOS不,你绝对不能通过方法的返回值从异步任务中返回一些东西。等等。让我试试。回头见。谢谢。就是这样。我想给你比通常更多的积分:这让我对异步操作的现象以及完成处理程序睁大了眼睛。我更聪明谢谢,谢谢。
[self loginWithCompletion:^(BOOL result) {
NSLog(@"result: %d", result);
if (result) {
[self getSomeJsonDataForThisUser];
}
}];