1

我目前在我的 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 Core Data 对象数组,我希望发送一个 [TagEntity tagName] 数组

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

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

而我真正希望得到的是

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

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

4

1 回答 1

0

如果您只有一个TagEntity实例数组,那么您可以通过以下方式获取字符串数组:

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

一旦你有了,你可以将数组传递给 RestKit(NSDictionary基于你的示例 JSON 包装)或NSJSONSerialization直接使用并使用底层 AFNetworking 提供的 API 来发送 JSON。

于 2013-09-26T15:26:52.393 回答