使用 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 的嵌套映射

如何使用带有 RKObjectMapping 的 RestKit 0.24 将本地 JSON 字符串映射到对象?

RestKit:给定 RKObjectMapping、object.class 和 JSON 字符串,如何获取映射对象?

RestKit RKObjectMapping 嵌套 json

RestKit - RKObjectMapping 只运行一次