【发布时间】:2012-06-27 21:23:51
【问题描述】:
在成功将 RestKit 用于对象映射后,我一直在尝试使用它进行发布,并不断收到错误消息“找不到 keyPath 的对象映射:''”。
我已经通过以下代码仅使用 iOS 的 JSON 取得了成功:
responseData = [NSMutableData data];
NSURL *url = [NSURL URLWithString:@"http://lalubema.cloudapp.net:9000/Data.soap/Pessoa"];
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"Objective-c test from send Request #1" forKey:@"Nome"];
[params setObject:@"/Date(1200355200000)/" forKey:@"DataNascimento"];
[params setObject:@"M" forKey:@"Sexo"];
[params setObject:@"(31)2321-2383" forKey:@"Telefone"];
NSError *jsonError;
NSData *requestdata = [NSJSONSerialization dataWithJSONObject:params options:0 error:&jsonError];
NSMutableURLRequest *request;
request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d", [requestdata length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestdata];
//this kicks off the request asynchronously
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
我正在尝试使用 RestKit 并收到错误的代码如下:
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;
[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeJSON;
RKObjectMapping* pessoaMapping = [RKObjectMapping mappingForClass:[Pessoa class]];
pessoaMapping.setDefaultValueForMissingAttributes = YES;
[pessoaMapping mapKeyPath:@"DataNascimento" toAttribute:@"dataNascimento"];
[pessoaMapping mapKeyPath:@"Nome" toAttribute:@"nome"];
[pessoaMapping mapKeyPath:@"Sexo" toAttribute:@"sexo"];
[pessoaMapping mapKeyPath:@"Telefone" toAttribute:@"telefone"];
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:pessoaMapping];
RKObjectMapping* pessoaSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[pessoaSerializationMapping mapAttributes:@"dataNascimento", @"docIdentidade", @"email", @"foto", @"pid", @"nome", @"senha", @"sexo", @"telefone", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:pessoaSerializationMapping forClass:[Pessoa class]];
RKObjectRouter *router = [[RKObjectManager sharedManager] router];
[router routeClass:[Pessoa class] toResourcePath:@"/Pessoa/:id"];
[router routeClass:[Pessoa class] toResourcePath:@"/Pessoa" forMethod:RKRequestMethodPOST];
Pessoa *Novo = [[Pessoa alloc] init];
Novo.nome = @"Objective-c test from send postPessoa #1";
Novo.telefone = @"(31)1234-5678";
Novo.sexo = @"M";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd-MM-yyyy"];
RKDotNetDateFormatter *dotNetFormattedDate = [[RKDotNetDateFormatter alloc] init];
NSString *data = [dotNetFormattedDate stringFromDate:[df dateFromString: @"10-10-1979"]];
Novo.dataNascimento = data;
// POST to /Pessoa
[[RKObjectManager sharedManager] postObject:Novo delegate:self];
RKLog 错误是:
2012-06-27 17:58:28.539 MyTestApp[6101:fb03] 我 restkit:RKLog.m:33 RestKit 已初始化...
2012-06-27 17:58:28.589 MyTestApp[6101:fb03] I restkit.network.reachability:RKReachabilityObserver.m:369 已确定可达性观察者的网络可用性
2012-06-27 17:58:41.260 MyTestApp[6101:fb03] W restkit.object_mapping:RKObjectMapper.m:81 添加映射错误:找不到 keyPath 的对象映射:''
2012-06-27 17:58:41.261 MyTestApp[6101:fb03] E restkit.network:RKObjectLoader.m:222 在映射过程中遇到错误:找不到 keyPath 的对象映射:''
2012-06-27 17:58:41.261 MyTestApp[6101:fb03] E restkit.network:RKObjectLoader.m:345 尝试从有效负载映射服务器端错误时遇到错误:找不到 keyPath 的对象映射:''
2012-06-27 17:58:41.262 MyTestApp[6101:fb03] Erro encontrado:错误域=org.restkit.RestKit.ErrorDomain Code=1001“找不到 keyPath 的对象映射:''”UserInfo= 0x808fac0 {=RKObjectMapperKeyPath, NSLocalizedDescription=找不到 keyPath 的对象映射:''}
【问题讨论】: