【发布时间】:2015-01-03 16:18:24
【问题描述】:
我有一个与我的 API 开发人员期望的完全不同的核心数据数据模型。 (由于应用程序的工作方式,我不能偏离这一点)
我已使用一些自定义类将 managedObjectModels 简化为所需的格式
一个转换器类,它启动并提供:(为便于阅读而简化)
- 包含顶级对象的 generalData 类
- 表示 GeneralData 中对多关系对象格式的 manyData 类
- 一个 otherData 类,它也包含 generalData 类中的多个关系对象,但与 manyData 类无关。
这些是 generalData 属性:
-(NSString*) ID
-(NSString*) 名称
-(NSString*) 位置
-(NSArray*) 许多数据对象
-(NSArray*) 其他数据对象
每个 manyData 和 OtherDataObject 依次拥有一些基本属性、它们自己的 ID 和 generalData ID。
我在 generalData 类中添加了以下请求映射:
+ (RKObjectMapping *)defineRequestMapping
{
RKObjectMapping * mapping = [RKObjectMapping mappingForClass:[generalData class]];
[mapping addAttributeMappingsFromDictionary:@{
@"generalID": @"generalID",
@"generalName": @"generalName",
@"generalPosition": @"generalPosition",
@"generalManyData": @"generalManyData",
@"generalOtherData": @"generalOtherData"
}];
return mapping;
}
然后像这样运行它:
RKObjectMapping *requestMapping = [[generalData defineRequestMapping] inverseMapping];
[objectManager addRequestDescriptor:[RKRequestDescriptor
requestDescriptorWithMapping:requestMapping objectClass:[generalData class] rootKeyPath:nil method:RKRequestMethodPOST]];
我还在 manyData 和 OtherData 类中添加了类似的 defineRequestMapping 类方法。
每次我尝试使用 Restkit 序列化 generalData 类时,我都会收到一条错误消息,告诉我它无法序列化未知的 manyData 类。如果我评论“generalManyData”和“generalOtherData”行,它可以工作并将其他 3 个属性序列化到身体。
我似乎找不到一个教程来清除我的思绪,并且此刻我对下一步该做什么感到困惑。我尝试使用关系映射,但这并没有让我更进一步。也许我忘记了什么?
【问题讨论】:
-
听起来您在“manyData”和“otherData”类中设置的映射存在问题。如果没有看到代码,我不能说什么,但我会设置断点并确保在这些类上设置了映射,并且这些类的所有对象映射都已正确配置以启动
-
嗯,我会调查一下。我认为我收到了 JSONWrite 错误,因为它无法遍历数组中的 manyData 对象。设置这些嵌套映射的绝对正确方法是什么?
-
您应该真正展示每个类的接口(带有属性)和映射。目前您的属性名称和映射名称不匹配...
标签: ios objective-c json serialization restkit