ios - 在 shouldSetValue :atKeyPath restkit 中将 NSNull 值强制为零

标签 ios restkit restkit-0.20

我有一个网络服务,可以从数据库中收集公司名称和电话号码。但有时不提供电话号码。当我尝试使用restkit将电话号码映射到对象时,我会收到一条警告,有时该值为零。然后我收到警告消息:

Coercing NSNull value to nil in shouldSetValue:atKeyPath: -- should be fixed.

有什么建议如何将 nil 映射到 NSNull 吗?

这是我的 customerrealtion 类 (.h) 的头文件:

 #import <Foundation/Foundation.h>
 #import <RestKit/RestKit.h>

 @interface CustomerRelation : NSObject

 #pragma private fields


 @property (nonatomic, copy) NSString *companyName;
 @property (nonatomic, copy) NSString *phoneNumber;

 @end

客户关系类的实现文件(.m)

 #import "CustomerRelation.h"

 @implementation CustomerRelation



-(BOOL)ValidatecompanyName:(id*)ioValue error:(NSError **)outError {
   NSLog(@"error");

}
-(BOOL)validatephoneNumber:(id *)ioValue error:(NSError **)outError {
if (*ioValue == nil) {
    if (outError != NULL) {

              }
    return NO;
}
return YES;
}

@end

这是我进行映射的地方:

- (void)viewDidAppear:(BOOL)animated{

RKObjectManager * client = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://127.0.0.1"]];
RKObjectMapping *articleMapping = [RKObjectMapping requestMapping];
[articleMapping addAttributeMappingsFromDictionary:@{@"Companyname": @"companyName",
                                                     @"Phonenumber": @"phoneNumber"}];
RKResponseDescriptor *rkresponsedesc =  [RKResponseDescriptor responseDescriptorWithMapping:articleMapping method:RKRequestMethodGET pathPattern:nil keyPath:@"customers" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[client addResponseDescriptor:rkresponsedesc];

NSMutableURLRequest *request = [client requestWithObject:nil method:RKRequestMethodGET path:@"test.php" parameters:nil];



RKObjectRequestOperation *operation = [client objectRequestOperationWithRequest:request
                                                                               success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                                                                                   [self mappingSuccess:mappingResult];

                                                                               } failure: ^(RKObjectRequestOperation *operation, NSError *error) {
                                                                                   NSLog(@"Failed with error: %@", [error localizedDescription]);
                                                                               }];
[client enqueueObjectRequestOperation:operation];



MainViewController *viewController =  [self.storyboard instantiateViewControllerWithIdentifier:@"mainViewController"];

[self.navigationController pushViewController:viewController animated:YES];

}

 - (void)mappingSuccess:(RKMappingResult*)mappingResult
{
    NSLog(@"Success block: %@", mappingResult);
}

最佳答案

看到该错误,我猜您使用的是旧版本的 RestKit,您应该更新。

也就是说,您应该能够与 RestKit 支持的 KVC 验证结合起来。如果您在目标模型对象上实现 validateValue:forKey:error:,您可以验证和编辑为任何键设置的值。

关于ios - 在 shouldSetValue :atKeyPath restkit 中将 NSNull 值强制为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19010756/

相关文章:

ios - 过滤 Mkoverlay 数组

ios - 在 XCTestCase 的 setUp() 中等待多个异步调用

ios - RestKit OAuth 2 密码验证流程

objective-c - RestKit iOS 应用程序根据请求崩溃

ios - Restkit资源映射取决于参数

iOS - 在不知道其大小的情况下添加 View

ios - 将 CFAbsoluteTime 存储到 nsmutablearray

objective-c - RestKit:映射复杂嵌套的问题,需要forceCollectionMapping的多个级别

ios - RestKit:如何使用路由发布对象?

ios - RestKit 如何发布一个对象