Restkit 无法为 keyPath 添加映射
Restkit Unable to add mapping for keyPath
我的几个对象有字段 "id" 并且 RestKit 不允许我将它们映射到相同的名称。我怎样才能解决这个问题?对于这两个对象,我有一个相应的服务器端对象,需要填写 MyId 属性。我不想将属性重命名为解决方案。
这里有两个例子 类 我可能会用到:
@interface MyObject : NSObject
@property NSNumber *id;
@end
@interface AnotherObject : NSObject
@property NSNumber *id;
@end
这是我将 运行 用于这两个对象的代码示例:
RKObjectManager* objectManager = [RKObjectManager managerWithBaseURL:url];
RKObjectMapping *userMapping = [RKObjectMapping requestMapping];
NSDictionary *objMapping = @{@"id": @"MyId"};
[userMapping addAttributeMappingsFromDictionary:objMapping];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[MyObject class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:requestDescriptor];
objMapping = @{@"id": @"MyId"};
[userMapping addAttributeMappingsFromDictionary:objMapping];
requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[AnotherObject class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:requestDescriptor];
这是我会得到的错误:
由于未捕获的异常 'NSInternalInconsistencyException',正在终止应用程序,原因:'Unable to add mapping for keyPath MyId, one already exists...'
问题很简单,你正在调用:
[userMapping addAttributeMappingsFromDictionary:objMapping];
多次使用相同的参数,这是不允许的。
在您问题的特定情况下,您不需要第二行。在一般情况下,您在映射中会有一些其他差异,因此您将创建一个新映射(然后向其添加映射字典):
[RKObjectMapping requestMapping]
我的几个对象有字段 "id" 并且 RestKit 不允许我将它们映射到相同的名称。我怎样才能解决这个问题?对于这两个对象,我有一个相应的服务器端对象,需要填写 MyId 属性。我不想将属性重命名为解决方案。
这里有两个例子 类 我可能会用到:
@interface MyObject : NSObject
@property NSNumber *id;
@end
@interface AnotherObject : NSObject
@property NSNumber *id;
@end
这是我将 运行 用于这两个对象的代码示例:
RKObjectManager* objectManager = [RKObjectManager managerWithBaseURL:url];
RKObjectMapping *userMapping = [RKObjectMapping requestMapping];
NSDictionary *objMapping = @{@"id": @"MyId"};
[userMapping addAttributeMappingsFromDictionary:objMapping];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[MyObject class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:requestDescriptor];
objMapping = @{@"id": @"MyId"};
[userMapping addAttributeMappingsFromDictionary:objMapping];
requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:userMapping objectClass:[AnotherObject class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:requestDescriptor];
这是我会得到的错误:
由于未捕获的异常 'NSInternalInconsistencyException',正在终止应用程序,原因:'Unable to add mapping for keyPath MyId, one already exists...'
问题很简单,你正在调用:
[userMapping addAttributeMappingsFromDictionary:objMapping];
多次使用相同的参数,这是不允许的。
在您问题的特定情况下,您不需要第二行。在一般情况下,您在映射中会有一些其他差异,因此您将创建一个新映射(然后向其添加映射字典):
[RKObjectMapping requestMapping]