OStack程序员社区-中国程序员成长平台

标题: ios - 使用 RestKit 发布多个对象(作为 JSON 数组) [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:09
标题: ios - 使用 RestKit 发布多个对象(作为 JSON 数组)

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

示例对象

@interface MyExampleObject : NSObject

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

@end

Array-Object 包含多个 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" : "MyKey1",
      "value" : "MyValue1"
    },
    {
      "key" : "MyKey2",
      "value" : "MyValue2"
    }
]

relationshipMappingFromKeyPath 更改为 nil 对我来说似乎很明显。但这不起作用(得到 setObjectForKey: key cannot 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) {
...
}



Best Answer-推荐答案


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

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






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4