0

私は一般的にプログラミングに慣れていないので、私の無知を許してください。誰かが私を正しい方向に向けることができれば、それは大歓迎です。

AFNetworking のこのチュートリアル ( http://www.raywenderlich.com/30445/afnetworking-crash-course ) に従い、Web から JSON を解析するために自分のプロジェクトで動作させました。

そのデータを別の UIViewController に転送する方法をまだ理解していません。View Controller 間のデータの受け渡しやその他の関連する質問が役に立たないことを見てきました。

Delegates&Protocols/Singletons/GlobalVariables/ReferencingClasses を使用してみましたが、値を常に NULL に NSLog すると、JSON に関連しない他の素材に対してそれらを機能させることができます。(また、JSON データが変更されます。これらのオプションの一部は変更できないことをどこかで読みました)

このチュートリアルでは、カスタム NSDictionary クラスを使用して JSON データを保存し、prepareForSegue を使用してそれを渡すように思えますが、私の知る限り、それはストーリーボードのみの方法です。nibファイルを使用しています。プロジェクト全体をストーリーボード スタイルに切り替えるだけですか、それとも Nibs/Xib でこれを行う方法はありますか?

これを読んでいただきありがとうございます。最後に質問でご迷惑をおかけしたかったのですが、しばらく行き詰まってしまいました。

編集:リクエストを実行したViewControllerでJSONデータを取得しましたが、他のViewControllerに転送されません。必要なすべての新しいコントローラーでJSONデータをリクエストするのは悪い習慣だと思います。

EDIT2ここにいくつかのコードがあります(必要に応じてさらに投稿できます)

 

-(void)jsonData { NSLog(@"Loading JSON..."); NSURL *url = [NSURL URLWithString:@"http://fillerCode.com"]; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"station",@"1",@"previous_song", nil]; NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/scripts/MoreFillerCode" parameters:params]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest: request // JSON SUCCESS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSLog(@"Getting Next Song..."); self.get_next_song = (NSDictionary *)JSON; RightViewController *rightViewController = [[RightViewController alloc] init]; rightViewController.get_next_song = self.get_next_song; [self updateViewStuff]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Data" message:[NSString stringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [av show]; NSLog(@"Operation Failed"); }]; [operation start]; NSLog(@"JSON Operation Started"); }
4

2 に答える 2

0

サンプルを機能させたい場合は、次の 2 つの手順のいずれかを行う必要があります。

  1. @interface で RightViewController を宣言し、オブジェクトの初期化、プロパティの設定、セグエの作成時にその宣言を参照します。

  2. RightViewController オブジェクトを作成しているのと同じブロックでセグエを作成します。そうしないと、参照が失われます。

于 2013-09-16T20:57:26.370 に答える