【问题标题】:posting array of dictionaries with Restkit 0.20使用 Restkit 0.20 发布字典数组
【发布时间】:2013-08-19 23:29:22
【问题描述】:

我无法使其正常运行。

我已经映射了我想要注入到请求中的 JSON 有效负载的键值对,但我最终在每个帖子上都失败了。

以下几行显示我创建请求:

RKObjectMapping *requestMapping = [WDMappingProvider createRegInitRequestTicketMapping];
    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:[requestMapping inverseMapping] objectClass:[WDTicketsModel class] rootKeyPath:nil];
[registrationManager addRequestDescriptor:requestDescriptor];

然后我创建我的发布路径并将数据放入我的发布请求:

//Make object from params
    WDRegistrationInitializeRequestModel *requestModel  = [[WDRegistrationInitializeRequestModel alloc] init];

    requestModel.eventID = [params objectForKey:@"eventID"];
    requestModel.arrayOfTicketDictionaries  = [params objectForKey:@"arrayOfTicketDictionaries"];

    NSString *postPath = [NSString stringWithFormat:@"api/v1/registrations/initialize?eventid=%@", requestModel.eventID];

    //Post the object (aka the interest json payload)
    [registrationManager postObject:requestModel.arrayOfTicketDictionaries path:postPath parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result){ ...

此时我总是在 postObject 方法的 Failure 块中结束。

我的 [WDMappingProvider createRegInitRequestTicketMapping] 映射如下所示:

+(RKObjectMapping *)createRegInitRequestTicketMapping
{
    RKObjectMapping *regInitRequestMapping = [RKObjectMapping mappingForClass:[WDTicketsModel class]];
    [regInitRequestMapping addAttributeMappingsFromDictionary:
     @{
        @"Quantity" : @"quantity",
        @"TicketID":@"mainID"
     }];


    return regInitRequestMapping;
}

arrayOfTicketDictionaries 如下所示:

[{"Quantity":1,"TicketID":1604},{"Quantity":1,"TicketID":1605},{"Quantity":1,"TicketID":1606}]

有什么想法吗?

【问题讨论】:

    标签: objective-c json nsdictionary restkit


    【解决方案1】:

    我认为这是因为您缺少 RKResponseDescriptor 部分。尝试添加这个:

    // Anything in 2xx
    NSIndexSet *statusCodes =
      RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
    RKResponseDescriptor *responseDescriptor =
      [RKResponseDescriptor
       responseDescriptorWithMapping:requestMapping
       method:RKRequestMethodAny
       pathPattern:nil
       keyPath:nil
       statusCodes:statusCodes];
    [registrationManager addResponseDescriptor: responseDescriptor];
    

    【讨论】:

    • 您能分享一下您遇到的错误吗?这将有助于找到您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多