2010-09-01 64 views
1

这是我的代码比较缺乏投

NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row]; 
    NSArray *Children = [dictionary objectForKey:@"Children"]; 
    NSArray *Title = [dictionary objectForKey:@"Title"]; 

if([Children count] == 0) { 
    if(Title =="A #1"){ 
UIImageView *tmp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg2.png"]]; 
     [dvController.detailImage addSubview:tmp]; 
     [tmp release]; 

} 我不能够比较“标题”,at if(Title == "A #1") ,其给予警告"Compariosn of distinct pointer types lacks a cast"我如何能在if条件比较标题。 我也试过

if([Title isequalToString:@"A #1"])...but its not working for me. 

Sry for unformated question。 问候

+0

请照顾好您的格式,然后再发布。有预览。谢谢。 – 2010-09-01 05:50:10

回答

3

你的数据结构看起来怪异......你想要什么在字典存储?

但正如其他人已经说过:如果TitleNSArray与字符串或NSString相比,您将不会变为true。

如果Title应该是NSString您可以将此:

NSString *title = [dict objectForKey:@"Title"]; 
if ([title isEqualToString:@"my string"]) { /* do it */ } 
+0

完美的工作..谢谢 – iscavengers 2010-09-01 06:08:54

1
NSArray *Title = [dictionary objectForKey:@"Title"]; 

标题是NSArray类型,“A#1”是NSString编译器是100%正确的,因为总是......因为他们是不同类型的,你不能比较这两个Object

你可能要像

if([[Title objectAtIndex:0] isEqualToString:@"A #1"]]) 

OR

NSString *Title = [dictionary objectForKey:@"Title"]; 
if([Title isEqualToString:@"A #1"]]) 
+0

这甚至不是NSString ...它错过了@。 – 2010-09-01 05:49:39

+0

感谢您的回复...但我试着你的snippet..app得到崩溃...说 “***终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' - [NSCFString objectAtIndex:]:无法识别的选择器发送到实例0x6f22760'“ – iscavengers 2010-09-01 06:01:37

+0

是的......但我想指出那个错误会让他困惑...... – 2010-09-01 06:02:39

3

您将Title声明为NSArray *,所以它显然是与字符串不同的类型,不能与字符串进行比较。 (也许这是一个错字?)

也许更多的东西一样:

NSString myTitleString = (NSString *)[dictionary stringForKey"@"Title"] 

if ([ myTitleString isEqualToString:@"foo") ]) { ... } 

是你想要的吗?

+0

谢谢 我想我们的代码还,但是在将它声明给NSstring时,会出现警告,“NSdictonary可能不会响应-stringFor Key”...现在你建议你怎么做? – iscavengers 2010-09-01 06:04:00

+0

糟糕。您需要从NSDictionary获取NSArray,并从NSArray获取NSString。我的代码跳过那一步。你能想出来并插入缺失的步骤吗?或者你需要代码? – hotpaw2 2010-09-01 06:55:14

1

如果我了解代码,这是因为格式化有点困难。您正在将标题定义为NSArray。如果你想做一个字符串比较,你需要一个NSString。因此,您要么声明错误类型的“标题”,要么您希望字典中有字符串的另一个数组。我会认为这是第一个。这应该工作:

NSString *titleString = [dictionary objectForKey"@"Title"]; 

if([titleString isEqualToString:@"A #1"]){ 
}