在JSON中返回null时,我的对象中的NSString参数设置为NSNull。我希望将NSString设置为nil。任何想法?
我已尝试设置[mapping setAssignsDefaultValueForMissingAttributes:NO];
,但即使我从Fix 1714实施更改,这似乎也不起作用。我现在真的只是在转动轮子。
到目前为止,这是我拨打此电话的所有内容。
返回JSON
{
val1 = "something";
val2 = "<null>";
}
班级cMyClass
@interface cMyClass : NSObject {
NSString *val1;
NSString *val2;
}
RKObjectMapping
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[cMyClass class]];
[mapping addAttributeMappingsFromDictionary:@{@"val1":@"val1", @"val2":@"val2"}];
RKResponseDescriptor
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"GetMyClass" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKObjectManager
NSURL *baseURL = [NSURL URLWithString:@"http://www.domain.com/MyAPI.svc/rest"];
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:baseURL];
[objectManager addResponseDescriptor:responseDescriptor];
objectManager.requestSerializationMIMEType = RKMIMETypeJSON;
[objectManager.HTTPClient setDefaultHeader:@"Accept" value:RKMIMETypeJSON];
[objectManager.HTTPClient setParameterEncoding:AFJSONParameterEncoding];
API调用
NSDictionary *params = ...
objectManager getObjectsAtPath:@"GetMyClass" parameters:params success:(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
completionBlock:(mappingResult.array[0]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
failureBlock(error);
}];
答案 0 :(得分:1)
因为我刚刚开始使用Restkit,所以我抓住了吸管......但是,您是否认为映射可能存在问题?
看起来cMyClass中的值是ivars而不是属性。如果我没有记错的话,除非另有说明,否则这些都是&#34;受保护的&#34;因此,如果您正在调用该类的实例,则无法真正访问这些内容。也许将它们移动到属性并查看它是否可以在那里工作!