2012-12-17 14 views
6

Próbuję zrozumieć, jak działa framework AFNetworking. Ale jest mało szczegółów, których nie rozumiem. Napisałem podklasę AFHTTPclient. Made It klasę singleton i dodał initializer który wykonuje następujące czynności:Co właściwie robi registerHTTPOperationClass w AFNetworking?

- (id)initWithBaseURL:(NSURL *)url { 
    self = [super initWithBaseURL:url]; 
    if (self) { 
     //custom settings 
     [self registerHTTPOperationClass:[AFJSONRequestOperation class]]; // ??? 
    } 
    return self; 
} 

Mam ten kod z samouczek znalazłem w internecie, ale nie rozumiem, dlaczego muszę rejestrować moją klasę dla JSONRequestOperation gdybym chcesz odzyskać dane JSON? Co dokładnie dzieje się pod maską, jeśli tak robię? Co dokładnie robi klasa registerHTTPOperation? PS: Czy istnieje dobra dokumentacja z przykładami i dogłębnymi objaśnieniami w Internecie?

+2

Cała dokumentacja jest tutaj: http://afnetworking.github.com/AFNetworking/ – rckoenes

Odpowiedz

11

Urządzenie registerHTTPOperationClass: na AFHTTPclient będzie używać zestawu klas do obsługi żądania podczas korzystania z metod getPath i postPath.

W podanym przykładzie parametr HTTPRequestOperation jest ustawiony na AFJSONRequestOperation, co oznacza, że ​​wszystkie żądania do serwera zostaną wykonane przy użyciu instancji AFJSONRequestOperation. AFJSONRequestOperation spróbuje przeanalizować wynik z serwera z klasą NSJSONSerialization.

Jeśli serwer odpowiada za pomocą XML, powinieneś ustawić na przykład HTTPRequestOperation na AFXMLRequestOperation.

+0

Awesome. Dziękuję Ci. Oto wyjaśnienie, którego szukałem. –

+0

dobra odpowiedź. + 1 –

+1

Dla mnie działa to tylko wtedy, gdy ustawiam opcję "[self setDefaultHeader: @" Accept "value: @" application/json "];". Dlaczego muszę ustawić defaultHeader ORAZ zarejestrować AFJSONRequestOperation? – hashier