出於某種原因,這個代碼不工作:目標C保留更改由塊製成的產權
[request setCompletionBlock:^{
NSString *response = [request responseString];
NSDictionary *data = [response JSONValue];
NSArray *events = (NSArray *)[data objectForKey:@"objects"];
for (NSMutableDictionary *event in events){
/* experimental code*/
NSString *urlString = [NSString
stringWithFormat:
@"http://localhost:8000%@?format=json",
[event objectForKey:@"tournament"]];
NSURL *url2 = [NSURL URLWithString:urlString];
ASIHTTPRequest *request2 = [ASIHTTPRequest requestWithURL:url2];
[request2 setCompletionBlock:^{
NSString *responseString = [request2 responseString];
NSDictionary *tournamentDict = [responseString JSONValue];
self.tournamentString = [tournamentDict objectForKey:@"tournament"];
}];
[request2 startAsynchronous];
/* end experimental code */
NSLog(@"%@", self.tournamentString);
[mutableArray addObject:event];
}
self.eventsArray = mutableArray;
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self.tableView reloadData];
}];
所以這裏有2個異步請求,在我火了一個又一個。我想在第二個請求執行後更改屬性tournamentText的值。
在第二個請求的完成塊內部,當我NSLog self.tournamentText時,它顯示我想要檢索的文本。
在塊之外,NSLog產生一個零。
我該怎麼做才能保留對self.tournamentText的更改?先謝謝了!請告訴我,如果我錯過了關於此的Apple文檔。
Outsideblock產生nil的原因是request2異步,它在request2完成之前執行。 – Saran