Ich habe eine Singleton-Klasse, in der ich eine Methode zum Parsen von Json-Daten über URL implementiert habe. Der Code ist wie untenWie man Json-Daten mit der Singleton-Klasse analysiert
-(id)parseJsonDataWIthURL:(NSString *)url :(NSString*)datumm
{
NSMutableDictionary *arrrrr=[[NSMutableDictionary alloc]init];
NSMutableURLRequest *reqqq=[[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:url]];
NSData *dataaa=[datumm dataUsingEncoding:NSUTF8StringEncoding];
[reqqq setHTTPMethod:@"POST"];
[reqqq setHTTPBody:dataaa];
NSURLSessionConfiguration *configg=[NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession*sessionn=[NSURLSession sessionWithConfiguration:configg delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDataTask *taskk=[sessionn dataTaskWithRequest:reqqq completionHandler:^(NSData *data,NSURLResponse *responce,NSError *error){
if(error)
{
NSLog(@"%@", [error localizedDescription]);
}else{
NSMutableDictionary *d = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments|NSJSONReadingMutableContainers error:&error];
NSLog(@"data %@",d);
[arrrrr setDictionary:d];
}
}];
[taskk resume];
return arrrrr;
}
Verfahren keine Werte zurückgibt, ist es, weil die Blöcke Zeit auszuführen nimmt innerhalb dieses Verfahrens das Ergebnis zurückgibt. Also gibt es eine Möglichkeit zu warten, bis Block abgeschlossen ist und den Wert zurückgibt.
Verwenden Sie einen Abschlussblock, Benachrichtigungen oder Delegate. Aber da es async ist, enthält 'grrrrr' keinen Wert bei der Rückgabe. – Larme
So verwenden Sie den Abschlussblock in meinem Code. Ist es möglich? –