Es sieht aus wie ich nicht das Konzept der Blöcke vollständig noch bekommen habe ...Erste Daten aus dem NSURLResponse Abschluss Block
In meinem Code ich habe die JSON-Daten, um aus den asychronous block
werden zurückgegeben aus der 'outer
' Methode. Ich googelte und fand, dass, wenn ein variable with __block
definiert wird, der v̶i̶s̶i̶b̶i̶l̶i̶t̶y̶ _mutability_ of
diese Variable auf block
erweitert wird.
Aber aus irgendeinem Grund zurückgegeben json Objekt ist nil.Ich frage mich warum?
- (NSMutableDictionary *)executeRequestUrlString:(NSString *)urlString
{
__block NSMutableDictionary *json = nil;
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPShouldHandleCookies:YES];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-type"];
NSString *cookieString = [self.userDefaults objectForKey:SAVED_COOKIE];
[request addValue:cookieString forHTTPHeaderField:@"Cookie"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue currentQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSLog(@"dataAsString %@", [NSString stringWithUTF8String:[data bytes]]);
NSError *error1;
NSMutableDictionary * innerJson = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error1];
json = innerJson;
}];
return json;
}
Dies ist eine absolut brillante Antwort IMHO! Ich habe zwar einige Zeit gebraucht, um es zu verstehen, aber es hat sich gelohnt. Danke, ich habe viel gelernt! – brainray