SinatraをサポートするサーバーでRestKitを使用する小さなアプリケーションがあります。ユーザーオブジェクトをサーバーに投稿すると、サーバーはユーザーを正常に保存し、新しく作成されたユーザーのjson表現で応答します。ここでRestKit - オブジェクトを投稿してその属性を更新します
は、クライアント上のユーザーを作成するためのコードです:
User *currentUser = [User currentUser];
currentUser.email = @"[email protected]";
currentUser.firstName = @"Jacob";
currentUser.lastName = @"Morris";
currentUser.phone = @"2088956709";
currentUser.deviceId = @"MY-DEVICE-ID";
currentUser.password = @"password";
currentUser.passwordConfirmation = @"password";
currentUser.timeStamp = [NSNumber numberWithFloat:3987987987.12233]; //totally random
RKSpecResponseLoader *loader = [RKSpecResponseLoader responseLoader];
[dataController.rkObjectManager postObject:currentUser mapResponseWith:[User rkObjectMapping] delegate:loader];
[loader waitForResponse];
NSLog(@"Current user id is now: %@", currentUser.userId);
STAssertTrue([loader success], @"response from server should be a success");
サーバから戻ってくる応答は次のようになります。
"{\"user\":{\"deviceId\":\"MY-DEVICE-ID\",\"email\":\"[email protected]\",\"userId\":5,\"lastName\":\"Morris\",\"phone\":\"\",\"timeStamp\":3987987968.0}}"
サーバがuserId
を割り当てるための責任がありますオブジェクトの作成に成功したとき。 応答が返ってくると、クライアント側でcurrentUserオブジェクトを更新したいと思います。投稿されたオブジェクトへの参照をオブジェクトローダーに渡しているので、これが可能であるはずです。どのようにして、成功したレスポンスでユーザーIDを更新するためにオブジェクトローダーを取得できますか? (私は、応答自体をキャプチャすることなくこれを行うことができるようにしたい)
iOSのユニットテストにRKSpecResponseLoaderをインポートできないようです。テストターゲットをコンパイルするにはどのようなライブラリを使用する必要がありますか? – cipherz
RKSpecResponseLoaderをテストターゲットに直接コピーして変更し、修正してコンパイルしました。そうすれば、私はRestKitビルドを壊さずにレスポンスローダーの機能を追加して変更することができました。 – jacobsimeon