0

私は iPhone と iPad のアプリで作業を始めていますが、まだいくつかのことを行う方法がわかりません。

ログイン画面を持つアプリを開発しています。別のアプリ言語で開発する場合WebService、Web サービスと通信して出力またはブール値を返すためのすべての作業を行う、という名前のクラスがあります。

しかし、Objective C私はそれを行う方法がわかりません。

これが私のコードです:

ViewController.m

- (IBAction)login:(id)sender {
    /* Verify if username and password are correct */
    Boolean loginCorrecto = [[WebService alloc] login:self.textFieldUsername.text password:self.textFieldPassword.text];

    /* If login is correct, go to another view */
    if (loginCorrecto) {
        CupsViewController *cupsView = [self.storyboard instantiateViewControllerWithIdentifier:@"cupsViewController"];
        [self.navigationController pushViewController:cupsView animated:YES];
    } 
    /* If not, show an error message */
    else {

    }
}

WebService.m

- (Boolean)login:(NSString *)username password:(NSString *)password
{
    /* HTTP POST */
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:URL_CUPS]];

    [request setHTTPMethod:@"POST"];

    NSString *postString = [NSString stringWithFormat: @"username=%@&password=%@", username, password];

    [request setValue:[NSString stringWithFormat:@"%d", [postString length]] forHTTPHeaderField:@"Content-length"];

    [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData {
    NSDictionary* jsonArray=[NSJSONSerialization
                    JSONObjectWithData:theData
                    options:0
                    error:nil];

    //Get values of response of web service
    status = [jsonArray objectForKey:@"status"];
    message = [jsonArray objectForKey:@"message"];

    if([status isEqualToString:@"Ok"]) {
        id results = [jsonArray objectForKey:@"results"];

        if(results != [NSNull null]) {
            for(int r = 0; r < [results count]; r++) {
            //Get more values
            }
        }
    }
    else {
        //Show error
    }
}

ゴール

だから私が欲しいのはのログインメソッドで、 「OK」に等しいWebService.m場合はtrueを返します。statusしかし、そのメソッドが終了しても、ステータスはまだnilです。どうすればいいですか?私が持っているクラスでそれを行う方法はありますか、またはで行う必要がありHttp PostますViewController.mか?

4

2 に答える 2

0

[[NSURLConnection alloc] initWithRequest:request delegate:self];非同期接続を開始します。プロトコル (Java のインターフェースと同等) を宣言し、それを ViewController に実装する必要があります。非同期メソッドが完了したら、プロトコルのメソッドの 1 つを呼び出し、必要なデータを渡します

于 2013-07-30T15:46:09.453 に答える