【问题标题】:RestKit POST-Mapping issueRestKit POST 映射问题
【发布时间】:2014-10-09 16:45:20
【问题描述】:

RestKit 中的 POST 映射有问题。基本上,我的应用程序需要将 JSON 文件发送到服务器,该服务器期望 JSON 看起来与以下示例完全相同:

{
  "ddata": { 
    "mLoad": {
      "value": 13, 
      "unit": "%"
    }, 
    "cLoad": {
      "value": 25, 
      "unit": "%"
    }
  }, 
  "dm": "0815", 
  "vin": "VAPP", 
  "ts": "2014-09-24"
}

不幸的是,我无法使用 RestKit 创建一个映射,它会生成一个与此格式匹配的 JSON。下面是 JSON 目前的样子:

{
  "ddata" : [
    {
      "mLoad" : {
        "unit" : "%",
        "value" : "25"
      }
    },
    {
      "cLoad" : {
        "unit" : "%",
        "value" : "37"
      }
    }
  ],
  "ts" : "2014-09-24",
  "vin" : "VAPP",
  "dm" : "0815"
}

正如您在结果中看到的那样,ddata 内容被写为一个数组。此外,每个 "object" 的外部{ } 太多了。
跟随我的课程和映射:

映射类

@interface TopMapping : NSObject

@property NSString *dm;
@property NSString *vin;
@property NSString *ts;
@property NSSet *ddata;

@end

子映射类

@interface SubMapping : NSObject

@property NSString *object;
@property NSString *value;
@property NSString *unit;

@end

实际映射

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[TopMapping class]];
[mapping addAttributeMappingsFromDictionary:@{
                                              @"dm": @"dm",
                                              @"vin":  @"vin",
                                              @"ts":  @"ts"
                                              }];
RKObjectMapping *subMapping = [RKObjectMapping mappingForClass:[SubMapping class]];
[subMapping setForceCollectionMapping:YES];
[subMapping addAttributeMappingFromKeyOfRepresentationToAttribute:@"object"];
[subMapping addAttributeMappingsFromDictionary:@{
                                                 @"(object).value" : @"value",
                                                 @"(object).unit" : @"unit"
                                                 }];

[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"ddata" toKeyPath:@"ddata" withMapping:subMapping]];

谁能告诉我我需要改变什么才能得到想要的结果?提前致谢。 (我已经为这个问题苦苦挣扎了好几天)

【问题讨论】:

  • 我认为问题在于您将NSSet 用于ddata 而不是NSDictionaryNSSet 本质上是一个没有重复元素的NSArray
  • 谢谢。你知道映射需要如何使用 NSDictionary 吗?
  • 对不起;我对 RestKit 了解不多。如果将NSSet 替换为NSDictionary 不起作用,我将无法为您提供更多帮助。

标签: ios objective-c json restkit restkit-0.20


【解决方案1】:

查看NSSet manual

你需要使用 NSDictionary 而不是 NSSet。

【讨论】:

  • Mhkay,这是有道理的。但是从 NSSet 到 NSDictionary 的简单更改不会这样做,对吗?你能告诉我我需要如何改变我的映射吗? (似乎我无法自己解决这个问题)
  • 我对 RestKit 没有足够的经验,但我认为一定是这样。事实上 JSON 不知道 NSSet 是什么,所以 RestKit 将它转移到 NSArray,所以你有你的“[...”而不是“{...”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
相关资源
最近更新 更多