RestKit: mapping JSON array of strings

独自空忆成欢 提交于 2019-11-30 07:36:22

You need to use a nil key path:

RKEntityMapping *featureMapping = [RKEntityMapping mappingForEntityForName:...];
[featureMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"name"]];
featureMapping.identificationAttributes = @[ @"name" ];

Then, on your top level object mapping, define the relationship:

[topMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"features" toKeyPath:@"features" withMapping:featureMapping]];

In your feature (in the model), myTopLevelObject should be defined as a bi-directional relationship to the top level object.

Jesse

If you are using Restkit 0.20+ then all you need to do is set the property that is representing the string array of your entity to Transformable.

For example, in this case your Feature entity has 3 properties:

someKey - String
otherKey - String
features - Transformable

Restkit will automatically map 'features' as a string array.

So once mapped, to access one of the strings in the features array would be as simple as:

[Feature.features objectAtIndex:?]

I just tried it and it works perfect.

I don't think you can map an array of strings into a ManagedObject like that. However, since Feature only has one name property you could just store it as an array into your MyTopLevelObject. You can do that by adding a features property to MyTopLevelObject in your datamodel with the type Transformable. RestKit will automatically parse the features a NSArray with NSStrings. You can then get the features as following:

MyTopLevelObject *topLevelObject = ... // get the object from the persistent store
NSArray *features = (NSArray*)topLevelObject.features; // this will contain the features as NSString objects
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!