我能够提取JSON结果并将其映射到数据库。 但是,一旦我尝试将实体映射到我的子类,似乎映射就中断了。

JSON Sample:
{"Customers":[{"Customer":{"Active":"Y","BranchID":0,"CustomerID":"SMCJIMB00736253","CustomerIdentifier":"","CustomerTypeID":0,"Name":""}}]}

Setup:
// Initialize RestKit
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:TEST_SERVICES_ROOT];

// Initialize object store
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:RKDefaultSeedDatabaseFileName];

Mapping:
RKManagedObjectMapping* customerMapping = [RKManagedObjectMapping mappingForClass:[Customer class]];
customerMapping.primaryKeyAttribute = @"customerID";
[customerMapping mapKeyPathsToAttributes:@"Active", @"active", nil];
[customerMapping mapKeyPathsToAttributes:@"BranchID", @"branchID", nil];
[customerMapping mapKeyPathsToAttributes:@"CustomerID", @"customerID", nil];
[customerMapping mapKeyPathsToAttributes:@"CustomerIdentifier", @"customerIdentifier", nil];
[customerMapping mapKeyPathsToAttributes:@"CustomerTypeID", @"customerTypeID", nil];
[customerMapping mapKeyPathsToAttributes:@"Name", @"name", nil];

Add Mapping:
[objectManager.mappingProvider setMapping:customerMapping forKeyPath:@"Customers.Customer"];

Call WS:
// Load the object model via RestKit    
RKObjectManager* objectManager = [RKObjectManager sharedManager];
NSString *url = [NSString stringWithFormat:SERVICE_CUSTOMERS,@"0",@"1",@"100"];
[objectManager loadObjectsAtResourcePath:url delegate:self block:^(RKObjectLoader* loader) {
    loader.objectMapping = [objectManager.mappingProvider objectMappingForClass:[Customer class]];
}];

@interface Customer : NSManagedObject

@property (nonatomic, retain) NSString* active;
@property (nonatomic, retain) NSNumber* branchID;
@property (nonatomic, retain) NSString* customerID;
@property (nonatomic, retain) NSString* customerIdentifier;
@property (nonatomic, retain) NSNumber* customerTypeID;
@property (nonatomic, retain) NSString* name;

//populated via fetch predicate
@property (nonatomic, retain) NSArray* customerAddress;

@end

@implementation Customer

@dynamic active;
@dynamic branchID;
@dynamic customerID;
@dynamic customerIdentifier;
@dynamic customerTypeID;
@dynamic name;

//populated via fetch predicate
@dynamic customerAddress;

@end

只要我不尝试将Customer类映射到数据模型中的Entity,此方法就可以正常工作。 最终,我试图将我的Customer类用作MKAnnotation,但由于无法提供具体的实现类,所以我不能这样做。 我敢肯定,应该归咎于对RestKit的某种误解。 我看到RKTwitterCoreData将RKStatus作为具体的子类。

@结束

===============>>#1 票数:0

好的,经过反复尝试,我发现了! 问题是我需要在映射上设置rootKeyPath,以匹配将映射添加到映射提供程序时使用的rootkeyPath。 RKTwitterCoreData客户端不执行此操作,但是出于任何原因我都需要这样做。

    RKManagedObjectMapping* userMapping = [RKManagedObjectMapping mappingForClass:[User class]];
    userMapping.rootKeyPath = @"User";
    userMapping.primaryKeyAttribute = @"userName";
    [userMapping mapKeyPathsToAttributes:@"Authenticated", @"authenticated", nil];

    ................
    [objectManager.mappingProvider setMapping:userMapping forKeyPath:@"User"];

  ask by cipherz translate from so

未解决问题?本站智能推荐:

1回复

使用RestKit将布尔属性从JSON映射到NSManagedObject

我正面临一些神秘的事情。 我在NSManagedObject子类“ReinspectionTask”上有一个布尔属性。 该属性为“isOpen”,表示该任务是否仍需完成。 在Core Data中,属性类型设置为Boolean。 该属性声明为NSNumber。 我从服务器中提取JSON,
1回复

使用RESTkit从JSON从NSManagedObject映射NSString的数组

一些先决条件: JSON正文: 应该映射到: 题: 嗨,我想这是两个问题: 为核心数据实体中的“消息”数组定义适当的类型 使用RKEntityMapping类映射此数组 现在,映射操作完成后,我得到一个异常: 在groups.goog
2回复

使用RestKit将JSON“关联数组”映射到CoreData

我需要使用RestKit(iOS)映射对象的JSON关联数组。 它看起来像具有属性135,145,423的对象及其上的对象。 我已经为有效的单个对象映射。 映射执行到CoreData。 我唯一的解决方案是将关联数组转换为普通数组,并将位号转换为“ id”字段,但是我认为这不是一个优
1回复

使用RestKIt在coredata实体上映射json对象

我正在使用RestKit开发一些待办事项列表应用程序。 我面临有关在iOS中使用CoreData返回的json表单服务器的一些映射问题。 场景 以下是我正在使用的列表和任务实体的图像。 当有人将新任务添加到服务器上的列表时,我将按照该特定列表的Json返回: 我对上
1回复

Restkit将响应映射到父实体-当响应没有父实体值时

我在项目中使用RestKit 0.2版本。 我有一种情况,需要将响应映射到已保存的父实体。 我的家长课堂是“对话”,对话中可能有很多消息。 首先,我将所有对话保存在“ 对话”实体下的Coredata中。 然后,我调用了该URL,以获取与特定对话相关的所有消息。 ht
2回复

使用RestKit映射时间

我的iOS项目使用RestKit 0.21.0组件负责从远程服务器获取,解析和存储Core Data响应。 在其中一个后端JSON响应中,我有类似的东西: 在Model.xcdatamodeld中,我使用字段startTime和endTime类型Date定义了实体。 通常,对对象的所
2回复

RestKit:将单个对象映射到现有数组

我有以下来自RestService的JSON结构: 我使用RestKit成功映射到了Core Data。 然后从另一个RestService(我无法更改),我将获得更多详细信息到items数组中的单个项目。 JSON答案看起来像 现在的问题是:如何映射第二个答案,以便将单个项
1回复

如何强制RESTkit映射始终​​更新响应NSManagedObject,而在JSON主体中没有唯一ID

我在响应JSON正文中没有任何可用的特定ID(我无法更改正文)。 这就是为什么我不能使用 是否可以以这样的方式配置映射,即不创建新的NSManagedObject而是始终更新前一个NSManagedObject? 我想从单个响应对象(特定类)获取用于ui更新的数据。 是的,我可
1回复

RestKit 0.20.1将本地JSON映射到Core Data崩溃

我正在尝试使用RestKit只是将本地JSON映射到我的Core Data实体,因为我正在处理对API的身份验证,并且已经在使用另一个库来做到这一点,所以我只是将RestKit传递给JSON数组数据(已验证我可以正确接收)。 我已经设置了所有基本必需的组件(数据模型/实体,NSManagedO
1回复

RestKit对象映射:如何从键值映射到新对象/关系?

不确定标题是否最好地描述了问题,如果您有更好的描述,请编辑标题。 因此,我正在实施一个处理产品订单的应用程序。 在每个订单中,都有“行项目”,即每个产品的订单信息。 我们从REST API调用获得的“订单项”的JSON数据如下所示: JSON数据: CoreData对象(