【发布时间】:2015-09-19 17:30:06
【问题描述】:
我正在使用以下代码发布对象
型号
@interface Event : NSManagedObject
@property (nonatomic, retain) NSString * eventID;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) Calendar *calendar; // many-to-one
@interface Calendar : NSManagedObject
@property (nonatomic, retain) NSString * calendarID;
@property (nonatomic, retain) NSSet *events; // one-to-many
RKRequestDescriptor
RKObjectMapping *calendarRequestMapping = [RKObjectMapping requestMapping];
[calendarRequestMapping addAttributeMappingsFromDictionary:@{
@"calendarID":@"calendar"}];
RKObjectMapping *postRequestMapping = [RKObjectMapping requestMapping];
[postRequestMapping addAttributeMappingsFromArray:@[ @"title"]];
[postRequestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"calendar" toKeyPath:@"calendar" withMapping:calendarRequestMapping]];
RKRequestDescriptor * eventRequestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:postRequestMapping objectClass:[Event class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:eventRequestDescriptor];
发布
[[RKObjectManager sharedManager] postObject:event path:@"/events/" parameters:nil success:nil failure:nil];
根据服务器日志,我贴的是
{u'calendar[calendar]': [u'3b60a22c-d46e-46ca-b978-ec81a8b47fcb'], u'title': [u'xxxxx']}
我期待的是
{u'calendar': [u'3b60a22c-d46e-46ca-b978-ec81a8b47fcb'], u'title': [u'xxxxx']}
我试过了
[calendarRequestMapping addAttributeMappingsFromDictionary:@{
@"calendarID":nil}];
或者
[postRequestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"calendar" toKeyPath:nil withMapping:calendarRequestMapping]];
两者都会抛出异常。
【问题讨论】:
-
您显示的 JSON 无效,需要更正。
-
对不起,我只是从我的服务器日志中复制了数据,这不是原始的 json 格式。这里的问题是关系字段
calendar的关键,我期望的是calendar但是calendar[calendar] -
无论如何,感谢您的关注:) @Wain
标签: ios objective-c restkit