0

Q&A セクションを自分のアプリの 1 つに統合しようとしています。

質問が Uilable として最初のビューに読み込まれ、回答が FlippedView に読み込まれるユーティリティ スタイルのアプリケーションを使用したいと考えていました。

質問と回答のデータを plist からロードし、シャッフル オプションを統合して、質問を混同できるようにしたいと考えていました。

plist メソッドはここに適していますか? この種のアプリを作成した経験のある人はいますか? ソースコードを見ることができるウェブ/書籍の例はありますか?

あなたの助けに感謝します。

j


アップデート:

OK - 私はこれを機能させようとしました。

ここに私のplist(DataDetail1.plist)があります:

Root...............................(Array)
........Item 0.....................(Dictionary)
.................Question..........(string)  ///Question text////
.................Answer............(string) ///Answer text/////
........Item 2.....................(Dictionary)
.................Question..........(strings) //Question text////
.................Answer............(strings) //Answer text/////

plist を NSarray として宣言できると考えていました。

- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"DataDetail1" ofType:@"plist"]; //Defines path for DATA For ARRAY//
NSArray* tmpArray = [[NSArray alloc] 
                            initWithContentsOfFile:path]; //initialises the contents of the ARRAY with the PLIST"
self.DataList1 = tmpArray; 
[tmpArray release];

次に、最初のビューでキーを UILable に割り当てます。

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
Label1.text = [DataList1 objectForKey:Question_KEY];

この時点で問題が発生しました。NSArray で「objectForKey」メソッドを使用できません。

これを機能させるにはどうすればよいですか?

j

ps

これが機能したら、flippedView に Plist 内の特定のアイテムから「Answer」キーをロードさせるために必要なコードは何ですか?

4

1 に答える 1

0

plist を使用してほぼすべてのものを保存できますが、問題はスケーリングできないことです。plist全体を一度にロードし、plistがシリアル化するすべてのオブジェクトをインスタンス化する必要があります。少数の小さなオブジェクトでは問題ありませんが、オブジェクトの数、サイズ、複雑さが増大するにつれて、すぐにメモリを消費し、管理が難しくなります。

各ファイルがテキストの質問とテキストの回答だけを含む数十枚のカードを表す場合、plist はおそらく問題なく動作します。より多くのカードを取得したり、グラフィックスを追加したりすると、故障します。

編集:

これ:

Label1.text = [DataList1 objectForKey:Question_KEY];

... 動作しないでしょう。objectForKey:NSArrayではなくNSDictionaryのメソッドです。配列の特定のインデックスで辞書を取得し、そのobjectForKey:メッセージを送信する必要があります。次のようなものが必要です。

Label1.text = [[DataList1 objectAtIndex:1] objectForKey:Question_KEY];
于 2010-07-14T17:19:57.560 に答える