以下代码无效。没有错误信息或任何东西..它只是工作。 (图像未显示在应有的位置) imgdtl是一个NSMutableDictionary
if ([NSString stringWithFormat:@"%@",[filePath pathExtension]] == @".jpg")
{
NSImage *myimage = [[NSImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@" ,filePath]];
[imgdtl setObject: myimage forKey: @"image"];
[imgdtl setObject:[NSString stringWithFormat:@"%@" ,fileName] forKey: @"filename"];
}
else{
NSImage *myimage = [[NSImage alloc] initWithContentsOfFile:@"no_image.gif"];
[imgdtl setObject: myimage forKey: @"image"];
[imgdtl setObject:[NSString stringWithFormat:@"%@" ,fileName] forKey: @"filename"];
}
但是这个有效:
NSImage *myimage = [[NSImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@" ,filePath]];
[imgdtl setObject: myimage forKey: @"image"];
[imgdtl setObject:[NSString stringWithFormat:@"%@" ,fileName] forKey: @"filename"];
我想仅在格式为.jpg时加载图像,并且如果文件有任何其他扩展名,则希望不加载图像。有人可以告诉我我做错了什么吗?谢谢!
--- --- EDIT
感谢所有评论,但以下代码给出了与上面相同的问题:
if ([[NSString stringWithFormat:@"%@",[filePath pathExtension]] isEqualToString @".jpg"])
答案 0 :(得分:4)
有数百个重复。
您想要比较字符串的内容,而不是指针。
==比较指针。要比较内容,请使用NSString的-isEqualToString:
方法
if ([string isEqualToString :@"other string"]) .....
修改强>
在旁注中,将重复的代码移出条件块, 它们是相同的,所以不需要把它们放在那里两次:
NSImage *myImage;
if ([[filePath pathExtension] isEqualToString: @"jpg"])
{
myImage = [[NSImage alloc] initWithContentsOfFile: filePath]];
}
else{
myImage = [[NSImage alloc] initWithContentsOfFile:@"no_image.gif"];
}
[imgdtl setObject: myImage forKey: @"image"];
[imgdtl setObject: fileName forKey: @"filename"];
答案 1 :(得分:1)
您是否尝试在if语句中使用“isEqualToString:”方法? NSString有一个isEqualToString方法,它比较字符的两个字符串而不是使用==运算符。它有时会返回不同的结果。
答案 2 :(得分:1)
使用以下objective-c方法:[someString isEqualToString:someOtherString]来比较字符串
答案 3 :(得分:1)
if ([[NSString stringWithFormat:@"%@",[filePath pathExtension]] isEqualToString @".jpg"])
{
NSImage *myimage = [[NSImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@" ,filePath]];
[imgdtl setObject: myimage forKey: @"image"];
[imgdtl setObject:[NSString stringWithFormat:@"%@" ,fileName] forKey: @"filename"];
}
else{
NSImage *myimage = [[NSImage alloc] initWithContentsOfFile:@"no_image.gif"];
[imgdtl setObject: myimage forKey: @"image"];
[imgdtl setObject:[NSString stringWithFormat:@"%@" ,fileName] forKey: @"filename"];
}
答案 4 :(得分:1)
您应该比较这样的字符串:
if ([[NSString stringWithFormat:@"%@",
[filePath pathExtension]] isEqualToString:@"jpg"])
...因为==
是一个指针比较,你(这次)对两个文本字符串的内容感兴趣,而不是它们是否指向相同的内存位置。