使用 RKObjectMapping 进行递归映射?
Posted
技术标签:
【中文标题】使用 RKObjectMapping 进行递归映射?【英文标题】:Recursive mapping using RKObjectMapping? 【发布时间】:2016-02-10 19:01:41 【问题描述】:如何使用 RKObjectMapping 将包含另一个自定义对象(比如 objectType2)的一些属性和数组的自定义对象(比如 objectType1)转换为字典。
基本上我需要在 NSUserDeafults 中保存一个自定义对象。
- (NSDictionary *)dictionaryFromMaping
RKObjectMapping * itemMapping = [RUserObject mapping];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:itemMapping.inverseMapping objectClass:[self class] rootKeyPath:nil method:RKRequestMethodPOST];
NSDictionary *dictionary = [RKObjectParameterization parametersWithObject:self requestDescriptor:requestDescriptor error:nil];
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
if (obj == [NSNull null])
[dictionary setValue:nil forKey:key];
];
return dictionary;
考虑这个例子
@interface ObjectType1 : NSObject
@property (nonatomic) NSString * name;
@property (nonatomic) NSArray * objectType2Array; // array of ObjectType2
@interface ObjectType2 : NSObject
@property (nonatomic) NSString * address;
现在我想为 ObjectType1
类型的对象获取 NSDictionary
【问题讨论】:
@Wain 你能帮忙吗? 什么是if !self return nil
?
糟糕!那是个错误。已将其删除。
所以我在您的映射中看不到任何关于关系/嵌套的内容。用户默认值与发布和请求描述符有什么关系?
我已经编辑了这个问题。我想要的只是使用 RKobject 映射在 NSUserDefaluts 中保存一个自定义对象。如果还有其他选择,请提出建议。 @Wain
【参考方案1】:
据我所知,您没有发出任何网络请求,因此您不需要请求描述符。您只是想在本地将模型对象图转换为 JSON,因此您应该使用 RKMapperOperation
。
【讨论】:
你能推荐一些示例代码来使用 RestKit 在 NSUserDefaults 中保存自定义对象吗?以上是关于使用 RKObjectMapping 进行递归映射?的主要内容,如果未能解决你的问题,请参考以下文章
RKObjectMapping 中的混淆设置映射 - Rest
如何使用带有 RKObjectMapping 的 RestKit 0.24 将本地 JSON 字符串映射到对象?
RestKit:给定 RKObjectMapping、object.class 和 JSON 字符串,如何获取映射对象?