私はこの方法を使用しています:
- (void)reload:(id)sender {
mutableImagenes=[[NSMutableArray alloc]init];
NSMutableArray *arrayImagenes=[[NSMutableArray alloc] init];
[Inicio ConexionInicio:^(NSArray *imagenesArray, NSError *error) {
if (error) {
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) message:[error localizedDescription] delegate:nil cancelButtonTitle:nil otherButtonTitles:NSLocalizedString(@"OK", nil), nil] show];
} else {
_ArrayInicio = imagenesArray;
for(Inicio *i in _ArrayInicio){
[mutableImagenes addObject:i];
}
}
}];
}
それは正常に動作しますが、2 回目までは正常に動作します。つまり、「Inicio ConexionInicio:...」に行く最初のデバッグ時に落ちる、つまり、私は を呼び出す[reload:nil]
のでViewDidLoad
、その後すぐにその配列が必要になります。 reload」が読み込まれますが、それは起こりませんViewDidLoad
。reload は終了するまで配列を返しConexionInicio
ます。
+ (void)ConexionInicio:(void (^)(NSArray *imagenesArray, NSError *error))block {
[[APIClient sharedClient] getPath:@"/WebConnection/ServletInicioJSON" parameters:nil success:^(AFHTTPRequestOperation *operation, id JSON) {
NSArray *imagenesFromResponse = [JSON valueForKeyPath:@"Inicio"];
NSMutableArray *mutableImagenes = [NSMutableArray arrayWithCapacity:[imagenesFromResponse count]];
for (NSDictionary *attributes in imagenesFromResponse) {
Inicio *i = [[Inicio alloc] initWithAttributes:attributes];
[mutableImagenes addObject:i];
}
if (block) {
block([NSArray arrayWithArray:mutableImagenes], nil);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (block) {
block([NSArray array], error);
}
}];
}
初めてロードして失敗し[[APIClient sharedClient] getPath:@"/WebConnection/ServletInicioJSON" parameters:nil success:^(AFHTTPRequestOperation *operation, id JSON)]
、終了します