我在将iPhone应用程序的Documents文件夹中的图像加载到tableView中时遇到问题。
在单独的请求中,我在服务器上检查所有可用的图像,并将它们下载到Documents下的“images”文件夹中。我非常确定图像是否正确保存。
NSString *filePath = [imagesFolderPath stringByAppendingPathComponent:imageFileName];
[urlData writeToFile:filePath atomically:NO];
NSLog(@"Saved to file: %@", filePath);
2010-01-22 17:07:27.307 Foo[2102:207] Saved to file: /Users/Hoang/Library/Application Support/iPhone Simulator/User/Applications/6133A161-F9DC-4C92-8AE6-5651022EAA94/Documents/images/86_2.png
[NSBundle mainBundle]不适合加载图像,因为在运行时,应用程序尝试连接到服务器以下载图像,它们不是静态的。
但是从Documents / images文件夹加载图像并不能在TableView上显示图像。
static NSString *CellIdentifier = @"CellCategory";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
UIImageView *imageView = cell.imageView;
MenuItem *item = (MenuItem *) [arrayMenuItems objectAtIndex:indexPath.row];
cell.textLabel.text = item.descrizione;
NSString *strImagePath = [[imagesFolderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%d_%d", item.idItem, item.idNode]] stringByAppendingPathExtension:@"png"];
NSLog(@"strImagePath: %@", strImagePath);
imageView.image = [[UIImage imageWithContentsOfFile:strImagePath] autorelease];
2010-01-22 17:07:42.842 Foo[2102:207] strImagePath: /Users/Hoang/Library/Application Support/iPhone Simulator/User/Applications/6133A161-F9DC-4C92-8AE6-5651022EAA94/Documents/images/86_2.png
有没有人遇到同样的问题?
我已经在stackoverflow中查看但没有成功。
提前致谢。
答案 0 :(得分:5)
我在将应用程序的Documents文件夹中的图像加载到UITableViewCell时遇到了同样的问题。这有效:
[UIImage imageWithContentsOfFile:fullPath];
答案 1 :(得分:0)
已修改:ANSWER
请务必检查NSData上的响应以查看是否有图像。在我的情况下,所有代码都没问题,但服务器的响应没有给出任何信息。它仍然能够将图像保存到文档/图像文件夹上的文件中,并且仍然不会引发任何错误,直到我意识到服务器上不存在所有图像。这是错误,与文件夹
没有任何关系原始回答
UIImage的初始化代码肯定存在一些问题。
我已经尝试了三个具有Documents目录路径的图像的初始化函数。
但它不起作用。
在这里你可以看到,代码总是落入(存在)块,第一行是从Documents / images目录加载图像,它总是失败。
(存在)块内的第二行,我试图从包中获取图像,它工作得很完美,但它不是我想要的。
第四行代码,我得到了服务器上图像的原始链接,它得到了我几乎想要的东西。 (实际上,我想要的是将所有图像从服务器保存到Documents / images目录中,然后从那里加载)
NSString *strImagePath = [[imagesFolderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%d_%d", item.idItem, item.idNode]] stringByAppendingPathExtension:@"png"];
NSLog(@"strImagePath: %@", strImagePath);
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:strImagePath];
if (exists){
//UIImage *menuImage = [UIImage imageWithContentsOfFile:strImagePath];
//UIImage *menuImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ALT" ofType:@"png"]];
//imageView.image = menuImage;
NSString *strImagePathURL = [NSString stringWithFormat:@"http://foo.com/%d_%d.png", item.idItem, item.idNode];
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:strImagePathURL]];
imageView.image = [[UIImage alloc] initWithData:imageData];
}
else {
imageView.image = [UIImage imageNamed:@"ALT.png"];
}
答案 2 :(得分:0)
硬编码路径是一个坏主意,因为它可以在重新部署期间发生变化,
尝试这样的事情.. NSString * imagessDirectory = [NSHomeDirectory()stringByAppendingPathComponent:@“Documents / images”];
并使用nsfilemanager验证文件/图像是否存在