2013-08-19 13 views
7

ile eşleştirip, bir URL'deki parametreleri sonuçlarıyla eşleştirmenin bir yolu var mı?Harita URL'leri parametreleri RESTKit

Kullanıcının kimliğine göre bir şeyler arayabileceği bir dinlenme servisim var. Yol search/:id 'dir. Sonuçlar, ad ve diğer özellikleri içerir, ancak kimliği içermez. Muhtemelen belirtmek gerekir
Xean

cevap

7

Yanıt tanımlayıcınızda belirttiğiniz yol desenini kullanmak istersiniz. Sonra eşleme sırasında yönlendirme (RKRoute) ve meta verileri kullanmak istiyorsunuz. Meta veriler, URL yolundan çıkartılan parametrelere erişim sağlayan bir yönlendirme bölümü içerir.

Bazı veriler here (belgeler yetersizdir).

@metadata.routing.parameters.id 

haritalama kaynak anahtar yolu gibi: eşlemenizde olarak

kullanmak istediğiniz.


Eğer nesne yöneticisine rotayı eklemem gerekiyor yönlendirme çalışması için:

[manager.router.routeSet addRoute:... 

Ve sonra getObjectsAtPathForRouteNamed:object:parameters:success:failure: gibi rota anlamına gelen bir şekilde istek kullanılır yapmak gerekir.

+0

Bu doğru yoldur. Benim sorunum, 'metadata.routing' dozunun mevcut olmaması. – Obenland

+0

'RKRoute' kullanıyor musunuz? Daha fazla yardım almak için eşlemelerinizi, yanıt tanımlayıcılarınızı ve yol yapılandırmanızı göstermeniz gerekir ... – Wain

+0

Benim rotamım '[RKRoute routeWithClass: [Öğe sınıfı] pathPattern: @" search /: id "yöntemi: RKRequestMethodGET];'. ResponseDescriptor, micha-mazaheri'nin yazdığı gibi aynıdır. Eşleştirmeyi @Wain 'addAttributeMappingsFromDictionary: ' – Obenland

1

herhangi ipuçları için

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

ama daha güzel bir yolu yoktur umut ...

Teşekkür:

böyle bir şey yapabileceğini pathPattern ve keyPath hesabınızın yanıt tanımlayıcısı ::

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