0

この質問が一般的/曖昧すぎないことを願っています...

iphone クイズ ゲーム アプリを書いていますが、データを処理する最善の方法を見つけるのに苦労しています。現在、それぞれがユーザー固有の「質問」クラスの配列を持つ「ユーザー」クラスの配列を保持する単一のモデルクラスを持つことを考えています。どのView Controllerからも包括的なモデルにアクセスできるようにしたいのですが、それはおそらくモデルオブジェクトを新しいView Controllerに渡すか、シングルトンを使用するか、何か他のことをしなければならないことを意味します. Model オブジェクトに他のクラスからアクセスする最良の方法は何ですか? よくわからないもう 1 つの要因は、データを保存できるかどうかです。Core Data/SQLite を使用して単一のモデル オブジェクトを保存する必要がありますか、それとももっと簡単な方法がありますか?

4

2 に答える 2

2

このリンクを確認してください。これは大いに役立ちます

リンク: http://mobile.tutsplus.com/tutorials/iphone/iphone-sdk_store-data/

これは、iPhone にデータを保存する 4 つの主要な方法をサンプル コードでカバーしています。

1)NSUserDeafult

2) 物件一覧

3) SQLライト

4) コアデータ

于 2012-07-19T16:18:04.803 に答える
2

CoreData を使用してスキーマを設計することから始めます。IMO、CoreData を使用して開始することをお勧めします。これは、アプリが単純なオブジェクトまたは 2 つを超えてスケ​​ーリングされた場合に、データ レイヤーを CoreData に変換する必要がないためです。

もう 1 つのルートは、データを返す Web サービスを作成することです...そのため、サービスを呼び出すだけで、ユーザー オブジェクトのコレクションが返されます。オブジェクト グラフ全体を質問とともに送信するか、別のサービスを作成して、特定のユーザーに一連の質問を返すことができます。Web サーバーが手元にある場合、この方法は、システムに新しい質問を取得するためにアプリの更新に依存する必要がないため、最も適しています。私は引き続き CoreData を使用して結果をキャッシュします...そのため、同じ情報を常にダウンロードすることはありません。

そのため、CoreData オブジェクトへのアクセスに関しては、シングルトンであるリポジトリ クラスを使用します。これにより、任意のビュー コントローラーがリポジトリのインスタンスを取得してデータを取得することが容易になります。そのようなものは次のようになります。

[[Repository defaultRepository] findFirst:[User class] 
                                           where:@"name == 'John'"]

データを取得するための冗長なコードがたくさんあるので、それをオブジェクトにまとめると、述語や並べ替えなどの厄介なコードをビュー コントローラーから取り除くのに役立ちます。where 句で va_list を利用している場所がわかるので、その文字列を述語に直接挿入できます。実装できる他の方法を次に示します。

- (NSArray *) findAll:(Class)entity 
            sortByKey:(NSString *)key
            ascending:(BOOL)ascending;

- (NSArray *) findAll:(Class)entity 
            sortByKey:(NSString *)key 
            ascending:(BOOL)ascending
                where:(NSString *)format, ...;

- (id) findFirst:(Class)entity 
           where:(NSString *)format, ...;

これが好ましい方法かどうかはわかりませんが、私はこの方法で多くの成功を収めてきました。お役に立てれば!

于 2012-07-19T16:32:44.090 に答える