我有一個使用RestKit和Sinatra支持的服務器的小應用程序。當我將用戶對象發佈到服務器時,服務器成功保存用戶,並以新創建的用戶的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對象。我想這應該是可能的,因爲我傳遞一個引用張貼對象到對象加載器。如何獲得對象加載器在成功響應時更新userId? (我希望能夠做到這一點,而不必捕獲響應本身。)
我似乎無法將RKSpecResponseLoader導入到我在iOS上的單元測試中。我需要使用什麼庫來與我的測試目標進行編譯? – cipherz 2012-02-29 16:16:39
我最終將RKSpecResponseLoader直接複製並修改到我的測試目標中,對其進行修改並從那裏進行編譯。這樣,我就可以添加和修改響應加載器的功能而不會中斷RestKit構建。 – jacobsimeon 2012-03-01 01:21:44