2009-12-29 101 views
1

我正在阅读从tableview行推送的详细视图的字典条目。
但在详细视图中,当我拾取要显示的数据(如HTML页面),我发现了消息:iPhone SDK初始化NSString警告消息

不相容的Objective-C类型初始化“结构的NSDictionary *”。 '结构NSString *'

我做了什么错误,它是如何修正的?

的代码是在这里:

- (void)viewDidAppear:(BOOL)animated { 
    NSLog(@"didappear"); 
    NSString *url = definition; // WARNING MESSAGE IS HERE 
    //self.glossaryWordDefinition.text = definition; 
    [glossaryWordDefinition loadRequest: 
     [NSURLRequest requestWithURL: 
     [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:url ofType:@"html"] 
     isDirectory:NO]]]; 
    [super viewDidAppear:animated]; 
} 
+0

需要看到更多的代码 - 在哪里定义声明和初始化?我猜不知道它是一个NSDictionary而不是NSString。 – Tim 2009-12-29 08:06:36

回答

1

你的“定义”变量似乎被宣布为一个的NSDictionary *,而你正试图将其分配到的NSString *。你大概意思是这样的:

NSString *url = [definition valueForKey:@"some key"]; 
+0

非常感谢。我有THINK(?)这个问题,因为我的初始词汇表视图/表是一个分段的(A到Z)字典,每个字母在项目0,1等索引的每个字词中都有一个数组,所以我不能作为行的detailviewcontroller中的引用行未声明,我没有密钥。也许我应该把它声明为一个数组?请你帮忙。 – 2009-12-29 16:18:09

+0

你可以发布你如何创建'定义'?或者说明它的结构。我不明白你在'定义'中有什么。如果你这样描述,我认为我或其他人可以提供帮助。 – 2009-12-30 03:23:26

0

试试这个,据我从给定的数据了解,

NSString *url = [definition objectAtIndex:row]; 

行是选定行的indexpath值,在didSelectIndexPath方法声明,

NSInteger row = [indexPath row]; 
+0

否则,需要多看看你的一些代码,创建定义和didSelectRowAtIndexPath方法 – Nithin 2009-12-29 09:11:33

+0

感谢这个。我有一个位于glossaryviewcontroller中的顶级tableview。它由字母表中的每个字母表示,然后当didselectrow被激活时,我推送一个detailviewcontroller。问题是,在detailviewcontroller.m我不能引用行,因为它是未声明的,我不能使用键,因为它是一个数组。我似乎在这个圈子里转圈了。任何帮助将不胜感激。整个事情应该像一个带有分段A-Z的字典一样工作,然后深入到定义。 – 2009-12-29 16:25:21

+0

然后你可能会创建带有值和键的字典。在这种情况下,您可能需要使用Zoran Simic提供的方法。或声明行为 NSUInteger row = [indexPath row]; – Nithin 2009-12-30 02:53:59