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

selfデリゲート( )として設定していますloader.delegate = self;が、デリゲートメソッドobjectLoader:didFailWithError:を実装していないか、デリゲートプロトコルに準拠していることを宣言していないようですRKObjectLoaderDelegate
– objectLoader:didFailWithError: required methodデリゲートに実装するために必要なメソッドです。

于 2012-07-02T09:13:43.437 に答える
0

ファイル内の RestKit ソースを見ると、次のコードが含まれている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 に答える
0

あなたはメッセージを受け取っていますがdidFailWithError:、あなたのクラスはそれを認識できません。そのメソッドをクラスに実装しましたか? 呼び出されdidFailWithError:ないのは、実装していないか、適切なクラスに実装していないためです。

于 2012-07-02T07:50:59.597 に答える