2012-06-01 1 views
3

Одна из многих замечательных функций библиотеки MKNetworkKit заключается в том, как легко «замораживать» HTTP-запросы POST (например, загружать на сервер), которые могут быть автоматическими, возобновляется позже, когда восстанавливается сетевая связь.MKNetworkKit - статус отслеживания замороженных операций/onCompletion & onError не называется

Подробности здесь: http://blog.mugunthkumar.com/products/ios-framework-introducing-mknetworkkit/#Operation_freezing

Но, как я подведению мое MKNetworkKit приложение на основе, я обнаружил, что onCompletion и OnError блоки не дозвонились на замерзшем сетевой транзакции (это, по-видимому известная выпуск), и я борюсь за создание пользовательского интерфейса вокруг этого, что позволяет пользователю узнать, когда действительно завершена замороженная транзакция.

Кто-нибудь имел дело с этой ситуацией?

Каков наилучший способ, чтобы пользователь не обращал внимания на сетевые капли и простои, но все равно мог дать некоторую обратную связь, когда было последнее успешное соединение?

ответ

4

Лучший ответ, с которым я столкнулся, заключался в подклассе MKNetworkOperation и затем переопределении операцииСуществует и работаетFailedWithError. Эти процедуры по-прежнему вызываются при завершении замороженной операции.

Из заголовка файла MKNetworkOperation.h:

/*! 
* @abstract Overridable custom method where you can add your custom business logic error handling 
* 
* @discussion 
* This optional method can be overridden to do custom error handling. Be sure to call [super operationSucceeded] at the last. 
* For example, a valid HTTP response (200) like "Item not found in database" might have a custom business error code 
* You can override this method and called [super failWithError:customError]; to notify that HTTP call was successful but the method 
* ended as a failed call 
* 
*/ 
-(void) operationSucceeded; 

/*! 
* @abstract Overridable custom method where you can add your custom business logic error handling 
* 
* @discussion 
* This optional method can be overridden to do custom error handling. Be sure to call [super operationSucceeded] at the last. 
* For example, a invalid HTTP response (401) like "Unauthorized" might be a valid case in your app. 
* You can override this method and called [super operationSucceeded]; to notify that HTTP call failed but the method 
* ended as a success call. For example, Facebook login failed, but to your business implementation, it's not a problem as you 
* are going to try alternative login mechanisms. 
* 
*/ 
-(void) operationFailedWithError:(NSError*) error; 
Смежные вопросы