1

それで、私が私の問題の十分に明確な説明を書くことができるかどうか見てみましょう...

私は美術館のアプリケーションを開発しています。ユーザーはIDまたはqrタグをスキャンすることでアートワークを見つけることができます...IDが入力されるかタグがスキャンされると、アプリケーションはユーザーを検索ビューから送信します。情報ビューに。情報ビューは、SQLiteデータベースからアートワークに関する情報を収集します...

私の問題は、情報ビューで、データベースクラスから関数を次のように呼び出すことです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];

    (additional code)
}

そして、情報を取得するのに問題はありません...正常に動作します...しかし、私の問題は、検索ビューに戻って新しいIDを入力するか、新しいタグをスキャンすると、呼び出し/検索が再度実行されないことです。 、ビューはまだメモリ内にあるため...

だから、私はどのように走りますか

NSArray *paintingInfo = [[PaintingDatabase database] findPaintingByID];

ビューに入るたびに...?

代わりにviewDidAppearに配置しようとしましたが、EXC_BAD_ACCESSエラーが発生します...

4

2 に答える 2

2

あなた自身の質問に答えることに近づいていると思います。viewDidLoad はビューがロードされたときにのみ呼び出されるため、同じ ViewController を使用している場合、探している結果が得られません。1 つのオプションは、毎回新しい ViewController を破棄して作成することです。これはおそらくパフォーマンス的には許容範囲でしょう。別のオプション (検討したようです) は、コードを viewWillAppear に配置することです。私はおそらくこれをもっと調べて、クラッシュの原因を突き止めます。

于 2011-10-11T03:39:12.290 に答える
0

簡単な説明ではわかりにくいかもしれませんが、特定の機能の問題ではなく、アプリケーション アーキテクチャの問題のように感じます。

別の方法として、情報ビューの外部からクエリを実行し、デリゲート メソッドを使用してビューのプロパティを更新することをお勧めします。これはむしろ MVC アプローチです。コントローラーはモデルからデータを取得し、そのデータをビューに渡して表示します。

説明したように、情報ビューはビューとコントローラーの両方の機能を使用しているようです。これが、最初のビューが終了した後に別のデータを取得しようとして問題が発生する理由である可能性があります。

ただし、クラッシュはビューの問題のようには聞こえません-それを追跡し、別の問題として釘付けにするというアドバイスを支持します.

于 2011-10-11T21:25:08.443 に答える