如何使用RestKit将Core Data对象数组序列化为字符串数组?

时间:2013-09-26 12:25:00

标签: ios django serialization restkit

我目前在iOS项目中使用RestKit版本0.20.3与我的后端Web服务进行通信。

在某些情况下,我的Web服务以字符串格式返回一个标记数组(django-taggit),我需要将每个标记字符串映射到核心数据实体。

// example JSON from web service

"response" : { "tags": ["tag1", "tag2", "tag3"] }


// example Core Data entities

@interface TagEntity : NSManagedObject

@property (nonatomic, retain) NSString *tagName;

@end

从下面的讨论中,我找到了一种将标记字符串数组映射到核心数据对象的方法。

https://groups.google.com/forum/#!topic/restkit/54eZFQIjl7c

tagEntityMapping = [RKEntityMapping mappingForEntityForName:@"TagEntity" inManagedObjectStore:[RKManagedObjectStore defaultStore]];
[tagEntityMapping addPropertyMapping:[RKAttributeMapping mappingFromKeyPath:nil toKeyPath:@"tagName"]]
tagEntityMapping.identificationAttributes = @[@"tagName"];
[resultEntityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tags" toKeyPath:@"tags"withMapping:tagEntityMapping]];

现在,我正在寻找一种方法将Core Data对象的标记字符串数组发布到Web服务。

换句话说,鉴于我有一个TagEntity核心数据对象数组,我希望发送一个[TagEntity tagName]数组

为实现这一点,我使用[resultEntityMapping inverseMapping]作为请求映射,但结果是,我得到了

"request" : { "tags": [{"tag1": {}}, {"tag2": {}}, {"tag3": {}}] }

而我真正想要的是

"request" : { "tags": ["tag1", "tag2", "tag3"] }

我将不胜感激任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您只有一个TagEntity个实例数组,那么您可以使用以下代码获取字符串数组:

NSArray *tagStrings = [tags valueForKey:@"tagName"];

一旦你有了,你可以将数组传递给RestKit(根据你的样本JSON包装成NSDictionary)或直接使用NSJSONSerialization并使用底层的AFNetworking提供的API发送JSON。 / p>