2014-06-10 21 views
5

mam tej klasy:Ignoruj ​​zero właściwości podczas szeregowania JSON za pomocą RestKit

@interface MovieStatus : NSObject 
@property (nonatomic, strong) NSNumber* seen; 
@property (nonatomic, strong) NSNumber* watchlist; 
@end 

Jeżeli obie właściwości reprezentowania opcjonalnych zerowalne wartości logicznych. Wysyłam ten obiekt na serwer przy użyciu narzędzia RestKit poprzez RKObjectManager i utworzyłem odpowiednie mapowanie. Ale nie mogę pominąć właściwości z danych POST podczas serializacji obiektu.

Na przykład ten kod:

RKLogConfigureByName("*", RKLogLevelTrace); 

RKObjectManager* manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://www.example.com/v1"]]; 
manager.requestSerializationMIMEType = RKMIMETypeJSON; 

RKObjectMapping* requestMapping = [RKObjectMapping requestMapping]; 
[requestMapping addAttributeMappingsFromArray:@[@"seen", @"watchlist"]]; 

RKRequestDescriptor* requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[MovieStatus class] rootKeyPath:nil method:RKRequestMethodPOST]; 
[manager addRequestDescriptor:requestDescriptor]; 

RKRoute* route = [RKRoute routeWithClass:[MovieStatus class] pathPattern:@"status" method:RKRequestMethodPOST]; 
[manager.router.routeSet addRoute:route]; 


MovieStatus* status = [[MovieStatus alloc] init]; 
status.seen = @(YES); 
[manager postObject:status path:nil parameters:nil success:nil failure:nil]; 

jest wysyłanie JSON:

{ 
    "seen": true, 
    "watchlist": null 
} 

Gdzie chciałbym do wysłania:

{ 
    "seen": true 
} 

Czy ktoś może wskazać mi się, jak czy mogę to osiągnąć?

Odpowiedz

9

Rozwiązałem go przez ustawienie assignsDefaultValueForMissingAttributes mapowania do NO:

requestMapping.assignsDefaultValueForMissingAttributes = NO; 

Teraz żądanie JSON nie zawiera null wartości.

+1

Czy mimo to można ustawić to globalnie zamiast indywidualnie dla każdego mapowania? – dirkoneill

+0

Możesz podklasę RKObjectMapping – VaporwareWolf

+1

To nie działa dla mnie, a także myślałem, że to było domyślnie ustawione na "NIE"? Napisałem nowe pytanie na http://stackoverflow.com/questions/31846262/how-do-i-ignore-empty-properties-on-posted-objects-using-restkit – Tim

Powiązane problemy