0

私はかなり新しい IOS 開発者です。全体として、すべてが順調に進んでいます。

コードのリストを保持するプログラムがあります。「+」を押して新しいコードを追加すると、新しいビューが Web サービスを呼び出してデータを検証し、有効な場合はそれを内部の sqlite データベースに追加します。ここまでは順調ですね。

アプリケーションに入ると、データベース内のすべてのコードでデータビューが更新されます。再び良い。ユーザーがいずれかのコードを選択すると、次のようになります。

別のサービスを呼び出して、データベース (興味がある場合は SQL サーバー) から詳細なデータを取得します。このデータを初期化されたテーブルに入れます。別のビューでデータを表示します。

私がやっているコードは次のとおりです。

最初のウィンドウの prepareForSegue で、必要なコードを取得し、それを 2 番目のビュー インスタンスに配置します。データベースをクリーンアップして準備し、prepareForeSeque を終了します。上記のすべてが機能しています!

次に、2 番目のビュー コントローラーの viewDidLoad が呼び出されます。

渡された変数を取得し、サービス リクエストを作成して、サービスを呼び出します。その後終了し、別のデータビューが numberOfRowsInSection を呼び出します。これは、XML データを処理してデータベースにプッシュするサービスからのコールバックがまだ呼び出されていないため、0 を返します。

セマフォ変数を作成して、データを処理したらサービス コールバックに設定してみました。次に、viewDidLoad で、この変数が設定されるのを待ってスピンしました。[NSSthread sleepForTimeInterval:0.25] を使用してスピンしましたが、サービス コールバックの呼び出しがブロックされている疑いがあります。

メインビューとサブビューの間に中間ビューを配置することで「ごまかす」ことができます-そして、サブビューへのセグエを手動で発行します-しかし、これはやり過ぎだと思います!

スタン

4

1 に答える 1

0

[self.myTableView reloadData];Webサービスリクエストの完了ブロックまたはデリゲートメソッド内で呼び出す必要があります。

Webサービスの呼び出しに何を使用していますか?私はAFNetworkingを使用して非常に堅牢でシンプルなNetworkClientを開発しました。すべてのWebサービス呼び出しには、取得したデータを処理する完了ブロックがあります。Webサービスからの辞書または配列を処理し、同期または非同期呼び出しを実行できます。また、オプションの組み込みAPIKeyがあり、セキュリティを強化するために設定してWebサービスに渡すことができます。Webサービスが実行できる必要があるのは、フォームのPOST要求を処理することだけであり、問​​題なく機能します。

私はいつもあなたが話していることをします、そして私はただテーブルビューをサポートする配列を構築して、それからテーブルビューでreloadDataメソッドを呼び出します。

于 2012-08-14T01:35:17.400 に答える