RestKit 0.24||getObjectsAtPath ||生成的对象的NSString参数设置为NSNull



当JSON中返回null时,我的对象中的NSString参数被设置为NSNull。我希望NSString设置为零。有什么想法吗?

我尝试过设置[mapping setAssignsDefaultValueForMissingAttributes:NO];,但即使在实现Fix1714中的更改时,这似乎也不起作用。在这一点上,我真的只是在旋转我的轮子。

到目前为止,这是我打这个电话所拥有的一切。

返回的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);
}];

自从我自己刚开始使用Restkit以来,我一直在抓救命稻草。。。但是,您是否认为映射可能存在问题?

看起来cMyClass中的值是ivar,而不是属性。如果我没有错的话,除非另有说明,否则这些都是"受保护的",所以如果你调用类的实例,你就不能真正访问它们。也许可以把它们搬到房产里,看看从那里开始是否有效!

最新更新