2013-08-19 8 views
7

esiste un modo per mappare i parametri in un URL ai risultati?Parametri url della mappa agli oggetti utilizzando RESTKit

Ho un servizio di assistenza in cui l'utente può cercare qualcosa tramite il suo ID. Il percorso è search/:id I risultati contengono il nome e altre proprietà ma non l'ID.

avrei potuto fare qualcosa di simile:

NSArray *array = mappingResult.array; 
for (Item *item in array) { 
     [item setId:itemID]; 
} 

ma spero ci sia un modo migliore ...

Grazie per eventuali suggerimenti
Xean

risposta

7

Si desidera utilizzare il percorso del percorso specificato nel descrittore di risposta. Quindi si desidera utilizzare il routing (RKRoute) e i metadati durante la mappatura. I metadati includono una sezione di routing che dà accesso ai parametri estratti dal percorso dell'URL.

Alcune informazioni sui metadati here (i documenti sono un po 'carenti).

Nella vostra corrispondenza che si desidera utilizzare:

@metadata.routing.parameters.id 

Come la chiave percorso di origine mappatura.


per rendere il lavoro di routing è necessario aggiungere il percorso al vostro gestore oggetti:

[manager.router.routeSet addRoute:... 

E allora avete bisogno di fare la richiesta in un modo che significa che il percorso viene utilizzato, come getObjectsAtPathForRouteNamed:object:parameters:success:failure:.

+0

Questo è il modo giusto. Il mio problema è che '@ metadata.routing' non esiste. – Obenland

+0

Stai usando 'RKRoute'? Sarà necessario mostrare i mapping, i descrittori di risposta e la configurazione del percorso per ottenere ulteriore assistenza ... – Wain

+0

Il mio percorso è '[RKRoute routeWithClass: [Classe elemento] pathPattern: @" search /: id "metodo: RKRequestMethodGET];'. ResponseDescriptor è lo stesso come ha scritto @ micha-mazaheri. Ho aggiunto la mappatura da @Wain con 'addAttributeMappingsFromDictionary:' – Obenland

1

probabilmente è necessario specificare il pathPattern e keyPath del descrittore risposta ::

RKResponseDescriptor *responseDescriptor = 
    [RKResponseDescriptor 
    responseDescriptorWithMapping:itemMapping 
    method:RKRequestMethodAny 
    pathPattern:@"search/:id" 
    keyPath:@"item" 
    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 
Problemi correlati