ios - 使用 RestKit 发布多个对象(作为 JSON 数组)

标签 ios objective-c restkit restkit-0.20

我正在尝试使用 RestKit 将多个对象作为数组发送到服务器。不幸的是我无法这样做。
遵循我非常简单的对象以及 RestKit 的映射:

示例对象

@interface MyExampleObject : NSObject

@property NSString *key;
@property NSString *value;

@end

保存多个 MyExampleObject 的数组对象

@interface MyArray : NSObject

@property NSArray *array;

@end

映射

RKObjectMapping *mappingObject = [RKObjectMapping mappingForClass:[MyExampleObject class]];
[mappingObject addAttributeMappingsFromDictionary:@{
                                              @"key" : @"key",
                                              @"value" : @"value"
                                              }];

RKObjectMapping *mappingArray = [RKObjectMapping mappingForClass:[MyArray class]];
[mappingArray addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"dummy" toKeyPath:@"array" mappingObject]];

如果我这样做,我会得到以下结果:

{
  "dummy" : [
    {
      "key" : "MyKey1",
      "value" : "MyValue1"
    },
    {
      "key" : "MyKey2",
      "value" : "MyValue2"
    }
  ]
}

但我只想要没有“key”的数组。像这样:

[
    {
      "key" : "MyKey1",
      "value" : "MyValue1"
    },
    {
      "key" : "MyKey2",
      "value" : "MyValue2"
    }
]

对我来说,将 relationshipMappingFromKeyPath 更改为 nil 似乎是显而易见的。但这不起作用(出现 setObjectForKey: key can not be nil 错误)。

我需要做什么才能将多个 MyExampleObjects 作为 JSON 数组发送到我的服务器?

解决方案:

Wain建议我删除我的“顶部映射”。最终映射之后:

RKObjectMapping *mappingObject = [RKObjectMapping mappingForClass:[MyExampleObject class]];
[mappingObject addAttributeMappingsFromDictionary:@{
                                              @"key" : @"key",
                                              @"value" : @"value"
                                              }];

当我将这些内容发布到我的服务器时,我只需执行以下操作:

NSArray *array = [NSArray arrayWithObjects:myExampleObject1, myExampleObject2, nil];
[[RKObjectManager sharedManager] postObject:array path:@"/myPath/" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
...
}

最佳答案

只需去掉 MyArray 对象和关联的映射,直接将 MyExampleObjectNSArray 传递给 post 方法即可。 RestKit 会理解它是一个要映射的对象数组并做正确的事情。

关于ios - 使用 RestKit 发布多个对象(作为 JSON 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467385/

相关文章:

ios - 如何在更改大小时为 Collection View 单元格的内部 View 设置动画?

objective-c - WebView 中的 Flash 视频无法在沙盒应用程序中运行

ios - 从预期返回非空值的方法返回 Nil

ios - 休息套件 : mapping with nested object with no id (dupplicated)

ios - 无法让自定义 RKBlockValueTransformer 与 RestKit 一起正常工作

ios - 如何在 RestKit 中映射动态响应?

IOS 忽略 ModalPresentationStyle 和 ModalTransitionStyle 并呈现全屏

ios - 如何从 UItableviewcell 呈现一个 viewcontroller

ios - UILabel 显示 Optional ("P")

ios - 不使用 Storyboard时处理 iOS 方向的正确方法