我在一个文件夹中有一堆客户图片(名为[code] .png),但有些客户没有图片,所以我想显示一个占位符。
我正在检查图像[code] .png的存在,如果它存在,我会显示那个,否则我会显示占位符。但是,即使对于存在的图像,fileExistsAtPath 始终也会返回false。
NSFileManager *m = [NSFileManager defaultManager];
NSString *imagePath = [NSString stringWithFormat:@"%@.png",code];
if ([m fileExistsAtPath:imagePath])
self.detailViewController.imageFrame.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",code]];
else
self.detailViewController.imageFrame.image = [UIImage imageNamed:@"customer_large.png"];
这始终显示customer_large。
但是,如果我将imagePath更改为图像的绝对路径并将显示的图像保留为相对文件名,则布尔值正常工作,并且显示的图像也可以正常工作< / em>的
这证明我检查的文件名确实存在,如图像所示,但我显然缺少fileExistsAtPath方面的内容,因为当程序证明该文件存在时它返回false。
答案 0 :(得分:1)
由于图像存储在项目中,而不是文档目录中,我根本不会使用NSFileManager。
相反,使用[UIImage imageNamed:@“IMAGE_FILENAME”]并查看它是否返回nil。如果是,则使用占位符。
以下是代码段:
UIImage *possibleImage = [UIImage imageNamed:@"IMAGE_FILENAME"];
if (possibleImage) {
self.detailViewController.imageFrame.image = possibleImage;
} else {
self.detailViewController.imageFrame.image = [UIImage imageNamed:@"customer_large.png"];
}
答案 1 :(得分:0)
我假设你的文件存放在文件目录中?如果是这样,首先通过以下方式获取文档目录的路径:
NSString *destPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
destPath = [destPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",nameOfImage]];
检查该文件是否存在。希望这会有所帮助:D
答案 2 :(得分:0)
现在imagePath
只是图像的名称。试一试:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:code ofType:@"png"];