0

私はこれを約3日間しっかりと機能させようとしてきました。誰かがアドバイスできますか。私は基本を構築しましたが、それらはすべてうまく機能しますが、その余分なビットを実行しようとすると、頭に浮かびません。plist から技術用語の表を作成しようとしています。これは、アルファベットによるインデックスとセクションの表です。これは正常に機能しますが、新しいビューコントローラーで各用語の定義に次のレベルを追加しようとすると、コードまたは plist 構造が正しくないように見えます。現在、2 つの plist を作成しています。26 個の配列にアルファベットの辞書があり、各配列内に一連の専門用語があります。これはすべてうまくいきます。次に、単語と定義のペアごとに 1 つずつ、辞書の配列として別の定義の plist を作成しました。@"word" を渡すことを期待しています ビューコントローラーからdetailviewcontrollerへのキーを取得し、@「定義」を取得します。これが正しいか間違っているかわかりません (?) 私のコードでは技術用語テーブルは素晴らしいですが、行を選択するとクラッシュします。詳細ビューが定義を取得できるように、詳細ビューコントローラーの参照を渡すためのコードに関係していることはわかっていますが、解決方法がわかりません。誰かがヘルプを参照できるように、コードの一部をここに投稿しました。何か案は?詳細ビューが定義を取得できるように参照しますが、それを解決する方法がわかりません。誰かがヘルプを参照できるように、コードの一部をここに投稿しました。何か案は?詳細ビューが定義を取得できるように参照しますが、それを解決する方法がわかりません。誰かがヘルプを参照できるように、コードの一部をここに投稿しました。何か案は?

NSString *wordPath = [[NSBundle mainBundle] pathForResource:@"newsortedglossary" ofType:@"plist"];
NSDictionary *wordDict = [[NSDictionary alloc] initWithContentsOfFile:wordPath];
self.words = wordDict;
[words release];
NSArray *wordArray = [[words allKeys] sortedArrayUsingSelector:@selector(compare:)];
self.wordKeys = wordArray;

NSString *definitionPath = [[NSBundle mainBundle] pathForResource:@"newnewdefinitionglossary" ofType:@"plist"];
NSDictionary *definitionDict = [[NSDictionary alloc] initWithContentsOfFile:definitionPath];
self.definitions = definitionDict;
[definitions release];

ここでdidSelectRow.......

GlossaryDetailViewController *glossaryDetailViewController = [[GlossaryDetailViewController alloc]
                                                              initWithNibName:@"GlossaryDetailView" bundle:nil];

NSLog(@"did select-2"); // CRASHES HERE with NSDictionary may not respond to objectAtIndex
glossaryDetailViewController.definition = [self.words objectAtIndex:indexPath.row];
NSLog(@"did select-3");
[self.navigationController pushViewController:glossaryDetailViewController animated:YES];
NSLog(@"did select-4");
[glossaryDetailViewController release];

ここにdetailViewController.......

- (void)viewDidAppear:(BOOL)animated {
NSLog(@"didappear");
self.glossaryWordDefinition.text = [definition objectForKey:@"definition"];
4

1 に答える 1

0

キーを使用して関連する値を検索するのではなく、インデックスを使用して辞書のメンバーにアクセスしようとしているようです。

あなたのdidSelectRowであなたはおそらくこれが欲しいでしょう:

glossaryDetailViewController.definition = [self.wordKeys objectAtIndex:indexPath.row];

違いは、インデックスを使用して配列のメンバーにアクセスしようとしていることです。

于 2009-12-24T23:45:15.303 に答える