0

我正在发送带有对象加载器的帖子并在输出窗口中收到此错误。仅供参考,我的didFailWithError:代表从未受到打击。不知道为什么。

`objectLoader:didFailWithError:]:` unrecognized selector `sent to class 0x123608`

我怎么知道什么是 0x123608?

我在 AppDelegate 类中设置了路由器,也在 AppDelegate 中设置了映射。

这是我的类中继承 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;
   }];       
}
4

3 回答 3

0

您正在接收消息didFailWithError:,而您的班级无法识别它。你在课堂上实现了那个方法吗?至于didFailWithError:没有被调用是因为你没有实现或者你没有在正确的类上实现。

于 2012-07-02T07:50:59.597 回答
0

您正在设置self为您的委托 ( loader.delegate = self;),但您似乎没有实现委托方法objectLoader:didFailWithError:和/或未声明您符合委托协议RKObjectLoaderDelegate
– objectLoader:didFailWithError: required method是在委托中实现的必需方法。

于 2012-07-02T09:13:43.437 回答
0

如果您查看 RestKit 源代码,在 file 中RKObjectLoader.m,您将看到didFailWithError message有以下代码:

    if (!self.isCancelled)
    {
        [self informDelegateOfError:error];
    }

当我收到超时错误时,它会到达此 if 语句并将isCancelled设置为YES,因此它会跳过代码以通知委托。这似乎是RestKit代码中的错误。RestKit这段代码与我使用的以前版本非常不同。我不知道为什么isCancelled boolean设置为YES,但是如果您注释掉 if 语句,它将按预期将错误传递给委托。

于 2012-10-02T22:25:46.423 回答