我发送一个带有对象加载器的Post并在输出窗口中收到此错误。
仅供参考,我的didFailWithError:
代表从未受到过打击。不知道为什么。
`objectLoader:didFailWithError:]:` unrecognized selector `sent to class 0x123608`
我怎么知道什么是0x123608?
我在AppDelegate类中设置路由器,在AppDelegate中设置Mapping。
这是我的类中继承RKObjectLoaderDelegate的方法。 我正在使用共享单身。
[[RKObjectManager sharedManager] postObject:review usingBlock:^(RKObjectLoader *loader){
// loader.params=params,
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[myclass class]];
loader.serializationMIMEType = RKMIMETypeJSON; // We want to send this request as JSON
loader.method = RKRequestMethodPOST;
loader.serializationMapping = [RKObjectMapping serializationMappingUsingBlock:^(RKObjectMapping* mapping) {
[mapping mapAttributes:@"field1", @"field2",@"field3",nil];
}];
loader.targetObject = nil;
loader.delegate = self;
}];
}
答案 0 :(得分:0)
您收到消息didFailWithError:
并且您的班级无法识别。你在课堂上实现了这个方法吗?至于didFailWithError:
没有被调用它是因为你没有实现,或者你没有在正确的类上实现。
答案 1 :(得分:0)
您将self
设置为您的委托(loader.delegate = self;
),但似乎您没有实现委托方法objectLoader:didFailWithError:
和/或未声明您符合委托协议RKObjectLoaderDelegate
。
– objectLoader:didFailWithError: required method
是在委托中实现的必需方法。
答案 2 :(得分:0)
如果查看RestKit源代码,在文件RKObjectLoader.m
中,您会看到didFailWithError message
包含此代码:
if (!self.isCancelled)
{
[self informDelegateOfError:error];
}
当我收到超时错误时,它会转到此if语句并且isCancelled
设置为YES
,因此它会跳过代码以通知代理。这似乎是RestKit
代码中的错误。此代码与我之前使用的RestKit
版本非常不同。我不确切地知道为什么isCancelled
boolean
设置为YES
,但如果您注释掉if语句,它会按预期将错误传递给委托。