0

我一直在努力让它工作大约三天,并让我思考它。有人可以建议。我已经建立了基础,它们都很好用,但是当我尝试做额外的一点时,我无法理解它。我正在尝试从 plist 构建技术术语表。这是一个按字母表索引和部分的表。这很好用,但是当我尝试在新的视图控制器中为每个术语的定义添加下一个级别时,我似乎无法正确获取代码或 plist 结构。目前我已经创建了两个 plist。一个包含 26 个数组的字母字典,每个数组中包含一系列技术术语。这一切都很好。然后我创建了另一个定义列表作为字典数组,每个单词/定义对都有一个。我期待通过@“word” 键从视图控制器到 detailviewcontroller 然后拿起@“定义”。我不知道这是对还是错的(?)我的代码显示技术术语表很棒,但选择一行时它会崩溃。我知道这与传递 detailviewcontroller 引用的代码有关,因此 detailview 可以获取定义 - 但我不知道如何解决它。我已经在这里发布了我的部分代码,以便有人寻求帮助。有任何想法吗?s 参考,以便详细视图可以获取定义-但我不知道如何解决它。我已经在这里发布了我的部分代码,以便有人寻求帮助。有任何想法吗?s 参考,以便详细视图可以获取定义-但我不知道如何解决它。我已经在这里发布了我的部分代码,以便有人寻求帮助。有任何想法吗?

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 回答