ios - 发布到服务器时嵌套对象的 RestKit 错误

标签 ios objective-c iphone json restkit

我有一个服务要向其发送以下类型的请求

 {"ClientDetails":{"ChauffeurId":0,"FirstName":"String","LastName":"String","Email":"String","Password":"String","PhoneNumber":"String","Thumbnail":"AA==","PayKey":"String","DeviceKey":"String"},"Token":"String"}

我正在使用以下代码使用 RestKit 映射发送此请求,如图所示,问题是我收到“JSON 写入(客户端)中的类型无效”错误,无法弄清楚错误是什么。

    RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[Client class]];
    [requestMapping addAttributeMappingsFromDictionary:@{ @"FirstName": @"FirstName", @"LastName": @"LastName",@"Email":@"Email",@"PhoneNumber":@"PhoneNumber",@"Token":@"PayKey",@"Password":@"Password",@"ChauffeurId":@"ChauffeurId",@"Image":@"Thumbnail",@"DeviceToken":@"DeviceKey" }];


    RKObjectMapping *tokenMapping = [RKObjectMapping requestMapping];
    [tokenMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"token" toKeyPath:@"Token"]];
    [tokenMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"client"
                                                                               toKeyPath:@"ClientDetails"
                                                                             withMapping:requestMapping]];

    RKRequestDescriptor *tokenReqDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:tokenMapping
                                                                                   objectClass:[RegClientRequest class]
                                                                                   rootKeyPath:nil method:RKRequestMethodPOST];

   // Register our descriptors with a manager
    RKObjectManager *manager = [RKObjectManager sharedManager];

    [manager addRequestDescriptor:tokenReqDescriptor];

    Client *client = [Client new];
    NewUser *user = [NewUser sharedNewUser];
    client.FirstName = user.strFname;
    client.LastName = user.strLname;
    client.Password = user.strPwd;
    client.PhoneNumber = user.strNum;
    client.Email = user.strEmail;
    client.Token = user.strToken;
    client.DeviceToken = user.strDeviceToken;

    RegClientRequest *regClientRequest = [RegClientRequest new];
    regClientRequest.token = [ServiceUrls token];
    regClientRequest.client = client;

    [manager postObject:regClientRequest path:[ServiceUrls registerUser] parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {   
     }

最佳答案

问题是您正在创建一个特定于类的映射,您应该在其中使用 [RKObjectMapping requestMapping 或采用 inverseMapping

这意味着目前您正在将客户端映射到客户端,并尝试将生成的客户端放入 JSON(而不是将客户端映射到字典)。

关于ios - 发布到服务器时嵌套对象的 RestKit 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203809/

相关文章:

ios - 从其他应用程序获取用户事件信息

ios - 在 Objective C 中共享 wifi 配置

ios - MKMapView 不响应触摸事件或手势识别器

iphone - CTFrameGetLineOrigins 中的错误?

iphone - 大小与字体 :minFontSize:actualFontSize:forWidth:lineBreakMode: not returning proper CGSize

ios - 在 UIBezierPath 上获取点,例如最左边和底部

ios - 在 AppDelegate.m : "prefix attribute must be followed by an interface or protocol" 中实现协议(protocol)

c# - 将 ObjC block 转换为 C# Lambda

ios - 为什么导入 ViewController 会导致 Xcode 无法找到另一个 ViewController?

ios - 为 iOS 9 启用 Bitcode 会使 IPA 大小增加 3 倍,这是 App Store 上的大小吗?