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