Эта проблема довольно проста, я просто не могу понять, как с ней справиться.
Я читаю данные с помощью:
[asyncSocket readDataWithTimeout:-1 tag:2];
NSString *failure = [serverJSONResponseParsed objectForKey:@"failure"];
NSLog(@"Contents of string failure: %@", failure);
if ([failure isEqualToString:@"none"]) {
NSLog(@"Success Sending String");
return TRUE;
}
else {
NSLog(@"Failure: %@",failure);
return FALSE;
}
Теперь, как и ожидалось, мой метод делегата вызывается и правильно считывает данные JSON:
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSError *error;
NSLog(@"didReadData: %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
serverJSONResponseParsed = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"didReadData test after dict: %@", [serverJSONResponseParsed objectForKey:@"failure"]);
}
Проблема в том, что поскольку GCDAsyncSocket является асинхронным, этот блок кода
NSString *failure = [serverJSONResponseParsed objectForKey:@"failure"];
NSLog(@"Contents of string failure: %@", failure);
if ([failure isEqualToString:@"none"]) {
NSLog(@"Success Sending String");
return TRUE;
}
else {
NSLog(@"Failure: %@",failure);
return FALSE;
}
после
[asyncSocket readDataWithTimeout:-1 tag:2];
Вызывается до того, как данные будут прочитаны. Как я могу обеспечить чтение данных, а затем их анализ.