我对目标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语句。它根本不会运行。任何想法为什么?我确信这是一个简单的解决办法,但我无法解决这个问题。
非常感谢任何帮助!
答案 0 :(得分:8)
那是因为你在两个不同的NSString
s实例之间进行指针比较。
这样做 -
if ([[mountedDisks objectAtIndex:currentDisk] isEqualToString:@"/Volumes/Kindle"])
{
NSLog(@"Kindle has been identified");
}
答案 1 :(得分:3)
使用NSString的-isEqualToString:
方法来比较字符串。 ==
只是比较字符串的地址。