1

私は信じられないほどxcodeが初めてで、コーディングについて少し知っていますが、アプリでAPIの使用を実装しようとしています. これが私がやろうとしていることです。

  • 最初のビューコントローラーから位置情報を取得します。
  • 2 番目のビューコントローラーからいくつかの変数を取得します。
  • 収集されたすべての変数を使用して、HTTP REQUEST を生成します
  • 返されたデータを 3 番目のビューコントローラーに表示します。

ビューコントローラーをセットアップし、最初のビューコントローラーがすでに私を見つけています。

どんな助けでも大歓迎です。マウンテン ライオンで最新の xcode を使用しています。これは、送信する必要がある要求ですhttp://yourtaximeter.com/api/?key=...

4

2 に答える 2

0

ビューコントローラーにロジックを実装しないでください。すべての接続に別のクラスを使用してください。たとえば、「ConnectionManager」クラスまたは「DataManager」クラスです。この質問をチェックしてください。

また、 AFNetworkingを確認し、 AFHTTPClientを使用して独自の API のサブクラスを作成することもできます。

于 2012-10-11T19:13:26.673 に答える
0

リクエストの前に VC で、プロパティ (および @synthesize) を宣言して、ネットワーク リクエストの結果を保持します。

@property (nonatomic, strong) NSData *responseData;

次に、リクエストをトリガーするイベントが何であれ、次のように開始します。

NSString *urlString = /* form the get request */
NSURL *url = [NSURL urlWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// consider doing some UI on this VC to indicate that you're working on a request

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    if (!error) {
        self.responseData = data;
        // hide the "busy" UI
        // now go to the next VC with the response
        [self performSegueWithIdentifier:@"ThridVCSegue" sender:self];
    }
}];

次に、次のように応答データを 3 番目の VC に渡します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"ThridVCSegue"]) {
        ThirdViewController *vc = (ThirdViewController *)[segue destinationViewController];
        [vc dataFromHTTPRequest:self.responseData];
    }
}

これは、ARC、ストーリーボードを使用し、そのセグエを定義することを前提としています。ThirdViewController には、http 応答データを受け入れるパブリック メソッドが必要です。

于 2012-10-11T19:36:03.867 に答える