2014-06-10 12 views
5

का उपयोग कर JSON serializing मैं इस वर्ग है:गुण शून्य पर ध्यान न दें जब RestKit

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

कहाँ दोनों गुण वैकल्पिक नल बूलियन मूल्यों प्रतिनिधित्व करते हैं। मैं इस ऑब्जेक्ट को RKObjectManager के माध्यम से RestKit का उपयोग कर सर्वर पर भेज रहा हूं और उपयुक्त मैपिंग बनाया है। लेकिन ऑब्जेक्ट को क्रमबद्ध करते समय मैं POST डेटा से संपत्ति को छोड़ने में असमर्थ हूं।

उदाहरण के लिए, इस कोड:

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

मैं कहाँ चाहते हैं भेजने के लिए:

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

JSON भेज रहा है

{ 
    "seen": true 
} 

किसी को भी मुझे कहना सकते हैं कि कैसे क्या मैं इसे प्राप्त कर सकता हूं?

उत्तर

9

मैं इसे NO के मानचित्रण के assignsDefaultValueForMissingAttributes सेट करके किया:

requestMapping.assignsDefaultValueForMissingAttributes = NO; 

अब JSON अनुरोध null मूल्यों शामिल नहीं है।

+1

क्या प्रत्येक मैपिंग के लिए व्यक्तिगत रूप से इसके बजाय इसे वैश्विक रूप से सेट करने के लिए वैसे भी है? – dirkoneill

+0

आप RKObjectMapping – VaporwareWolf

+1

उपclass कर सकते हैं यह मेरे लिए काम नहीं किया है, और मैंने यह भी सोचा कि यह डिफ़ॉल्ट रूप से 'NO' पर सेट किया गया था? मैंने http://stackoverflow.com/questions/31846262/how-do-i-ignore-empty-properties-on-posted-objects-using-restkit – Tim

संबंधित मुद्दे