RestKit 0.24 || getObjectsAtPath ||结果对象将NSString参数设置为NSNull

时间:2015-02-18 18:12:21

标签: ios objective-c restkit

在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);
}];

1 个答案:

答案 0 :(得分:1)

因为我刚刚开始使用Restkit,所以我抓住了吸管......但是,您是否认为映射可能存在问题?

看起来cMyClass中的值是ivars而不是属性。如果我没有记错的话,除非另有说明,否则这些都是&#34;受保护的&#34;因此,如果您正在调用该类的实例,则无法真正访问这些内容。也许将它们移动到属性并查看它是否可以在那里工作!