2012-12-18 18 views
11

Jestem trochę zmieszany co do sposobu korzystania z pakietu restkit, wygląda na to, że jest wiele sposobów na zrobienie tego samego. Zanim się zmyliłem z nim do czasu, aż zadziałało, ale teraz zmienił ramy i użycie w 0.20.x, I spędziłem dużo czasu, konwertując mój kod, a teraz spędzając jeszcze więcej czasu próbując zmusić go do pracy jak wcześniej. Przeszukałem niektóre przykłady i takie, które ludzie twierdzą, że pracują dla nich, nie robią dla mnie za dużo, więc gdzieś musi być różnica, więc może ktoś może mi powiedzieć, jaka jest różnica w próbie uzyskać te dane co najmniej na przykład 1 & 2 (co nie, ale to jest za pytanie o restkit github)RestKit 0.2, wiele sposobów, aby wykonać żądanie GET, POST, PUT

response.body={ 
"player": [ 
{ 
    "_id": "50585c86ded998e77a000002" 
} 
] 
} 

1.

[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]]; 

i uzyskać odtwarzacza, coś takiego:

Player *player = [Player new]; 
player.playerID = 2; 
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) 
{ 
// Request 
} failure:nil]; 

2.

Używanie deskryptora odpowiedzi jak w przykładzie.

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:playerWtfMappingIn pathPattern:nil keyPath:@"player" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 

[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor]; 

[tempPlayer setFbID:[result objectForKey:@"id"]]; 

[objectManager getObject:tempPlayer path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
{ 

} 
failure:nil]; 

3.

Albo faktycznie Blake'ów własne exmaple na wiki RestKit

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping pathPattern:nil keyPath:@"articles" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 

NSURL URL = [NSURL URLWithString:@"http://restkit.org/articles"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; 
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    RKLogInfo(@"Load collection of Articles: %@", objects); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    RKLogError(@"Operation failed with error: %@", error); 
}]; 

[objectRequestOperation start]; 

I jestem pewien, że istnieje wiele innych sposobów, Mam podejrzenie, czy ktoś może to potwierdzić, że jest sposób, w jaki powinieneś ustawić swoją ścieżkę i czy używasz jednej metody nad drugą, jest zdecydowanie determinowany przez zestaw danych, który próbujesz mapować i jego format. Z drugiej strony, niektóre z nich również wyglądają jak inny sposób robienia dokładnie tego samego? Dzięki

+1

nieco zdezorientowany, a jednak najlepszy krótki post na temat tego, jak go używać Natknąłem się dotychczas :) –

Odpowiedz

5

oba sposoby są poprawne. W rzeczywistości pierwsza jest jeszcze lepsza, ponieważ scentralizuje całą twoją konfigurację w RKObjectManager. Na projekt, który opiera się na RestKit, bardzo proponuję użyć drogę ObjectManager :)

Można nawet pójść o krok dalej i rozpocząć korzystanie z dróg, aby utrzymać czystsze kodu, zobacz wiki o tej części :)

Mam nadzieję, że pomogło to

+0

Czy jest jakiś sposób, aby uzyskać odtwarzacz, który id jest 2 i nazywa się james? –