RestKit - 自动实体映射

时间:2013-05-21 09:53:47

标签: objective-c restkit-0.20

我正在尝试使用RestKit来执行任何给定实体类名的自动映射,而无需手动定义字段。

示例,假设一个名为Product的托管对象,其字段为:idnametype。该实体位于默认商店。

我需要从此网址http://machin.net/products

获取产品列表
RKEntityMapping *map = [RKEntityMapping mappingForEntityForName:@"Product"
    inManagedObjectStore:[RKManagedObjectStore defaultStore]];

问题1 defaultStore不满足所需的商店,我甚至不知道如何指定商店。

[map addAttributeMappingsFromDictionary:@{
    @"id": @"id",
    @"name": @"name",
    @"type": @"type",
}];

问题2 正如您所看到的,我正在使用所有字段,它们在源代码和&amp ;;目的地,我没有找到任何方法告诉RestKit简单地使用给定类的所有字段。

2 个答案:

答案 0 :(得分:5)

关于问题2

我找到了一种使用RKPropertyIntrospector

自动映射实体的简单方法
NSEntityDescription *entity =
    [[managedObjectModel entitiesByName] objectForKey:@"Product"];
[map addAttributeMappingsFromArray:[[[RKPropertyInspector sharedInspector]
    propertyInspectionForEntity:entity] allKeys]];

我们甚至可以使用@{} keysOfEntriesPassingTest

添加例外

答案 1 :(得分:1)

对于1.您需要配置RestKit / Core数据堆栈

    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];

    self.managedObjectStore = managedObjectStore;

    [RKManagedObjectStore setDefaultStore:managedObjectStore];

    // complete the core data stack setup
    [managedObjectStore createPersistentStoreCoordinator];

对于2.你可以使用

[map addAttributeMappingsFromArray:@[
@"id",
@"name",
@"type",
];

从技术上讲,你可以对实体使用一些内省,但是你会编写更多代码。