У меня есть способ входа в систему. Внутри метода я использую NSURLConnection для входа в систему и хочу получить ответ NSData. Проблема в том, что я возвращаю NSData до того, как соединение действительно получит данные.
- (NSData*)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[responseData appendData:data]; //responseData is a global variable
NSLog(@"\nData is: %@", [[[NSString alloc] initWithData:responseData
encoding:NSUTF8StringEncoding]autorelease]);//this works
isLoaded = YES; //isLoaded is a BOOL
}
- (NSData*)login:(NSString*)username withPwd:(NSString*)password{
isLoaded = NO;
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
if(connection){
NSLog(@"Connected");
}
while(isLoaded = NO){
[NSThread NSSleepForTimeInterval: 1];
}
isLoaded = NO;
return responseData;
}
Программа застревает в цикле while, но без цикла while программа может получать данные с сервера, просто кажется, что метод возвращает responseData до того, как метод делегата изменит их.
Итак, мой вопрос в том, как я могу сделать так, чтобы метод возвращал responseData только после того, как сервер закончит с ним?