我正在尝试使用 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
对象和关联的映射,直接将 MyExampleObject
的 NSArray
传递给 post 方法即可。 RestKit 会理解它是一个要映射的对象数组并做正确的事情。
关于ios - 使用 RestKit 发布多个对象(作为 JSON 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467385/