使用 Swift我试图从URL下载JPG,然后将该图像保存到文件中,但是当我尝试将其保存到不同的目录时,它不会.它将下载到应用程序的Documents文件夹,但是当我尝试将路径设置为另一个子文件夹
let dir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0].stringByAppendingPathComponent("SubDirectory") as String let filepath = dir.stringByAppendingPathComponent("test.jpg") UIImagePNGRepresentation(UIImage(data: data)).writeToFile(filepath, atomically: true)
当我运行它时,它不会将图像保存到它?为什么会这样?我需要事先创建子文件夹吗?
几点想法:>子目录文件夹是否已存在?如果没有,您必须先创建它.现在建议使用NSURL而不是路径字符串.这样产量:
let filename = "test.jpg" let subfolder = "SubDirectory" do { let fileManager = NSFileManager.defaultManager() let documentsURL = try fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false) let folderURL = documentsURL.URLByAppendingPathComponent(subfolder) if !folderURL.checkPromisedItemIsReachableAndReturnError(nil) { try fileManager.createDirectoryAtURL(folderURL, withIntermediateDirectories: true, attributes: nil) } let fileURL = folderURL.URLByAppendingPathComponent(filename) try imageData.writeToURL(fileURL, options: .AtomicWrite) } catch { print(error) }
>我建议不要将NSData转换为UIImage,然后将其转换回NSData.如果需要,您可以直接编写原始NSData对象.
通过UIImage对此进行往返的过程可能会导致丢失质量和/或元数据,从而可能使得结果资产变大等.一般情况下,应尽可能使用原始NSData.