IOS restkit错误

时间:2012-07-02 07:48:18

标签: ios restkit

我发送一个带有对象加载器的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;
   }];       
}

3 个答案:

答案 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语句,它会按预期将错误传递给委托。