当POST请求通过RestKit发送到Web服务时,数据库尝试插入NULL值

时间:2013-11-15 16:07:55

标签: ios sql ruby-on-rails restkit-0.20

当我向我的webservice发出POST请求时,会产生以下错误:

  

TinyTds ::错误:无法将值NULL插入“BankCD”列,   表'SlotsMasterData.Master.Bank';列不允许空值。

服务器控制台显示以下内容:

enter image description here

从上面你可以看到我的Bank对象的所有属性都存在值,但是当'SELECT CAST(SCOPE IDENTITY()...'执行时,突然对每个属性的引用为NULL。

这是我的应用代码:

    RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:basePathToWebService]];

    RKObjectMapping *bankMapping = [RKObjectMapping mappingForClass:[Banks class]];

    NSDictionary *attributeMappingDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                @"BankID", @"bankID",
                                                @"BankCD", @"bankCD",
                                                @"BankName", @"bankName",
                                                @"InsertSourceKey", @"insertSourceKey",
                                                @"UpdateSourceKey", @"updateSourceKey",
                                                @"Active", @"active",
                                                nil];

    [bankMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];

    RKObjectMapping *bankRequestMapping = [RKObjectMapping requestMapping];
    [bankRequestMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];

    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:bankMapping method:RKRequestMethodAny pathPattern:@"/banks" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:bankRequestMapping objectClass:[Banks class] rootKeyPath:nil method:RKRequestMethodAny];

    [objectManager addResponseDescriptor:responseDescriptor];
    [objectManager addRequestDescriptor:requestDescriptor];

    [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"];

    //Post
    [objectManager postObject:bank path:@"/banks" parameters:nil success:nil failure:nil];

为什么尝试插入NULL值?我该如何解决?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

bankRequestMapping应声明为bankMapping的逆映射。正如你所拥有的那样,参数名称似乎是错误的。您应该使用Charles来检查您实际发送的内容以及它与您的期望相符。