iphone - NSData writeToFile 适用于模拟器但不适用于设备

标签 iphone ios uiimage nsdata writetofile

在我的 iPhone 应用程序中,我正在从网络上下载一些图像。它是否阻塞 UI 线程并不重要,事实上它需要阻塞 UI 线程直到完全下载。完成后,我通知 UI 唤醒并显示它们。

我的(简化的)代码是这样的:

for (int i=0; i<10; i++)
{
    //call saveImageFromURL (params)
}
//Call to Notify UI to wake up and show the images

+(void) saveImageFromURL:(NSString *)fileURL :(NSString *)destPath :(NSString *)fileName
{
    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];

    NSFileManager * fileManager = [NSFileManager defaultManager];

    BOOL bExists, isDir;
    bExists = [fileManager fileExistsAtPath:destPath isDirectory:&isDir];

    if (!bExists)
    {
        NSError *error = nil;
        [fileManager createDirectoryAtPath:destPath withIntermediateDirectories:YES attributes:nil error:&error];
        if (error)
        {
            NSLog(@"%@",[error description]);
            return;
        }
    }

    NSString *filePath = [destPath stringByAppendingPathComponent:fileName];
    [data writeToFile:filePath options:NSAtomicWrite error:nil];
}

当我完成 for 循环时,我很确定所有图像都存储在本地。它在模拟器中运行良好。

但是它在我的设备上运行不佳。 UI 在存储图像之前唤醒。而且几乎所有图像都显得空洞。

我做错了什么?

最佳答案

  1. 检查您的设备是否可以下载这些图像,访问 Mobile Safari 中的图像 URL 进行测试。 dataWithContentsOfURL: 将返回 nil 或者它不是正确的图像数据,例如 404 not found
  2. 记录 [data writeToFile:filePath] 的错误以查看保存的详细信息。

关于iphone - NSData writeToFile 适用于模拟器但不适用于设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662743/

相关文章:

iPhone SDK - 这个控件是什么?是习俗吗?

ios - Objective-C 中的 Box2D

ios - AirPrint UIImage A4

ios - UIImage 返回错误的宽度

iphone - 在 iOS 下,有没有办法确定崩溃报告中正在执行的架构?

iphone - uibarbuttonitem 色调颜色

html - Safari 9(在 iOS9 中)忽略 CSS 设置

ios - 在表格 View 中拉动刷新后滚动到屏幕顶部

ios - swift 从另一个类访问类类型变量

ios - UITableView 单元格图像在滚动时不断切换单元格