不同指针类型的比较缺少强制转换

时间:2010-09-01 05:35:16

标签: iphone

这是我的代码

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([Title isequalToString:@"A #1"])...but its not working for me.

讽刺未提出格式的问题。 问候

4 个答案:

答案 0 :(得分:3)

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

也许更像是:

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

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

是你想要的吗?

答案 1 :(得分:3)

您的数据结构看起来很奇怪......您想在该字典中存储什么?

但正如其他人已经说过的那样:如果Title属于NSArray,那么与字符串或NSString相比,你就不会成真。

如果Title应为NSString,您可以将其称为:

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

答案 2 :(得分:1)

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

标题是NSArray的类型,“A#1”是NSString编译器总是100%正确...你无法比较这两个对象,因为它们属于不同的类型

你可能想要像

这样的东西
if([[Title objectAtIndex:0] isEqualToString:@"A #1"]])

OR

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

答案 3 :(得分:1)

如果我理解代码,由于格式化有点困难。您将Title定义为NSArray。如果要进行字符串比较,则需要NSString。所以你要么声明错误类型的“标题”,要么你期望字典中你有字符串的另一个数组。我认为这是第一次。这应该有效:

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

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