如果声明没有运行

时间:2011-07-11 03:25:12

标签: objective-c cocoa

我对目标c和cocoa相当新,但是我花了很多时间使用c ++,而且我之前从未遇到过这个问题。

我的应用程序需要按名称识别已安装的磁盘。这是代码:

//this code will run whenever a new disk is mounted to the computer
-(void) scanForKindle:(NSNotification *) notification 
{
    NSMutableArray *mountedDisks = [[NSMutableArray alloc] init];
    mountedDisks = [workspace mountedRemovableMedia];
    NSMutableArray *ebookDevices = [[NSMutableArray alloc] init];
    NSDictionary *fileAttributes = [[NSDictionary alloc] init];

    int currentDisk;

    for (currentDisk = 0; currentDisk < [mountedDisks count]; currentDisk++)
    {
        NSLog(@"Name: %@", [mountedDisks objectAtIndex:currentDisk]);

        if ([mountedDisks objectAtIndex:currentDisk] == @"/Volumes/Kindle")
        {
            NSLog(@"Kindle has been identified");
        }
    }
} 

我已经完成了所有工作,完全符合for循环中的if语句。它根本不会运行。任何想法为什么?我确信这是一个简单的解决办法,但我无法解决这个问题。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:8)

那是因为你在两个不同的NSString s实例之间进行指针比较。

这样做 -

if ([[mountedDisks objectAtIndex:currentDisk] isEqualToString:@"/Volumes/Kindle"])
{
    NSLog(@"Kindle has been identified");
}

答案 1 :(得分:3)

使用NSString的-isEqualToString:方法来比较字符串。 ==只是比较字符串的地址。