Tôi biết có another similar question, nhưng nó dành cho phiên bản AFNetworking cũ hơn và không thực sự trả lời.AFNetworking-2 waitUntilFinished not working
Tôi đã đoạn mã sau:
AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername: currentUser() password: currentPassword()];
__block NSDictionary* response = nil;
AFHTTPRequestOperation* operation = [manager
GET: @"https://10.20.30.40:8765/foobar"
parameters: [NSDictionary dictionary]
success:^(AFHTTPRequestOperation* operation, id responseObject){
response = responseObject;
NSLog(@"response (block): %@", response);
}
failure:^(AFHTTPRequestOperation* operation, NSError* error){
NSLog(@"Error: %@", error);}
];
[operation waitUntilFinished];
NSLog(@"response: %@", response);
...
Nếu tôi chạy này, những gì tôi sẽ thấy trong nhật ký của tôi là:
2013-12-09 09:26:20.105 myValve[409:60b] response: (null)
2013-12-09 09:26:20.202 myValve[409:60b] response (block): {
F00005 = "";
F00008 = "";
F00013 = "";
}
Các NSLog
đó là sau các waitUntilFinished
cháy đầu tiên . Tôi hy vọng nó sẽ cháy thứ hai. Tôi đang thiếu gì?
Thật không may, tùy chọn # 1 chỉ bị treo mọi thứ hoàn toàn. Cả khối không bao giờ cháy. Không chắc chắn tại sao đặt nó ở đó, nhưng nó có. –
Tôi hiểu điều "treo giao diện người dùng xấu".Những gì tôi đấu tranh trong trường hợp này, đây là các truy vấn REST để cập nhật các mô hình cục bộ. Vì vậy, tôi muốn đặt công cụ AF này trong các lớp mô hình để thực hiện và thực hiện cập nhật. Vì vậy, sau đó tôi sẽ phải tăng thêm bất kỳ phương pháp nào trong số các phương thức này với andWhenYourDone: các khối, để tôi có thể kích hoạt cập nhật giao diện người dùng khi thích hợp. –
@TravisGriggs Sau đó, chỉ cần cung cấp các tham số khối phương thức 'updateModel' của mô hình (không giống như các khối' success' và 'failure' mà AFNetworking, chính nó, sử dụng). Bằng cách đó, trình điều khiển chế độ xem có thể nói, có hiệu quả, "cập nhật mô hình và khi hoàn tất, hãy thực hiện x, y và z". Xem câu trả lời đã sửa đổi. – Rob