0

ユーザーをアプリケーションにログインするとき、ユーザー名のみを使用してサーバーからユーザーオブジェクトをプルダウンする必要があります。これにより、他のAPI呼び出しを行うために必要なuserId(特に)が返されます。その時点から、userIdを使用して他の2つのHTTP呼び出しを行います。他の呼び出しを送信する前に、同期呼び出しを行ってユーザーオブジェクトを完全にプルダウンするにはどうすればよいですか?

アプリデリゲートクラスでオブジェクトマッピングを設定しました。これは完全に機能し、次のコードを使用してサーバーからユーザーオブジェクトをプルダウンしています。

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[@"/api/users/" stringByAppendingString:[_userNameField text]] delegate:self];

これは私が試したことです...ここで提案されているように:RestKitで同期呼び出しを行う

RKObjectLoader* loader = [[RKObjectManager sharedManager] objectLoaderForObject:currentUser method:RKRequestMethodPUT delegate:nil];
RKResponse* response = [loader sendSynchronously];

ただし、このコードは(1)非推奨のメソッドobjectLoaderForObjectを使用し、(2)と言ってクラッシュします'Unable to find a routable path for object of type '(null)' for HTTP Method 'POST''

4

1 に答える 1

4

これがiPhoneアプリケーションにとって理想的なデザインであるかどうかという問題はさておき、ブロックを使用して私が望んでいたことを達成することができました。

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[@"/api/users/" stringByAppendingString:[_userNameField text]] usingBlock:^(RKObjectLoader* loader) {

    loader.onDidLoadResponse = ^(RKResponse *response) {

        NSLog(@"Response: \n%@", [response bodyAsString]);
    };

    loader.onDidLoadObjects = ^(NSArray *objects) {

        APIUser *apiUser = [objects objectAtIndex:0];
        NSLog(@"user_id is %i", apiUser.user_id);


    };

    loader.onDidFailWithError = ^(NSError *error) {


            UIAlertView *badLoginAlert = [[UIAlertView alloc]initWithTitle:NSLocalizedString(@"LOGIN_FAILED", nil)
                                                                   message:NSLocalizedString(@"BAD PASSWORD OR USERNAME", nil)
                                                                  delegate:self
                                                         cancelButtonTitle:NSLocalizedString(@"OK", nil)
                                                         otherButtonTitles:nil];
            [badLoginAlert show];           
    };
}];

これが誰かを助けることを願っています。

于 2012-08-06T21:31:21.140 に答える