我正在尝试使用RestKit来执行任何给定实体类名的自动映射,而无需手动定义字段。
示例,假设一个名为Product
的托管对象,其字段为:id
,name
,type
。该实体位于默认商店。
我需要从此网址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简单地使用给定类的所有字段。
答案 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",
];
从技术上讲,你可以对实体使用一些内省,但是你会编写更多代码。