2012-12-18 14 views
11

Mi sto confondendo un po 'sul modo di usare il restkit, sembra che ci siano molti modi per fare la stessa cosa, Prima ero contenta solo di fare casino con esso fino a quando non ha funzionato, ma ora ha cambiato il framework e l'utilizzo in 0.20.x, e ho passato molto tempo a convertire il mio codice e ora impiegando ancora più tempo a cercare di farlo funzionare come prima. E ho setacciato per alcuni esempi e simili e quelli che la gente pretende di lavorare per loro, non fanno tanto per me, quindi ci deve essere una differenza da qualche parte, quindi forse qualcuno può dirmi la differenza nel seguente quando si tenta di ottenere questi dati, almeno per esempio 1 & 2 (che fallisce, ma che è per una domanda sul restkit github)RestKit 0.2, più modi per fare una richiesta GET, POST, PUT

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

1.

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

E per ottenere il vostro lettore, qualcosa di simile a questo:

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

2.

Utilizzo di una risposta Descrittore come tale.

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.

o di fatto Blakes proprio exmaple sul RestKit wiki

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]; 

e sono sicuro che ci sono molti altri modi, Il mio sospetto se qualcuno può confermare è che il il modo in cui dovresti impostare il tuo percorso e se usi un metodo piuttosto che un altro è deciso piuttosto dal set di dati che stai cercando di mappare e dal suo formato. Poi di nuovo un po 'sembra anche un modo diverso di fare la stessa identica cosa? Grazie

+1

un po 'confuso, ma il migliore breve post su come usarlo mi sono imbattuto finora :) –

risposta

5

in entrambi i casi sono corretti. In effetti, il primo è ancora migliore, poiché centralizza tutta la tua configurazione in RKObjectManager. Per un progetto che si basa su RestKit, consiglio vivamente di usare la strada ObjectManager :)

Si può anche fare un passo ulteriore e iniziare a utilizzare percorsi per mantenere il vostro pulitore codice, vedere il wiki di quella parte :)

Speranza che aiuta

+0

c'è un modo per ottenere un giocatore che id è 2 e il nome è James ?? –

Problemi correlati