【发布时间】:2019-11-25 16:35:23
【问题描述】:
我的 CoreData 中有 (n) 个数据 (UIImage JPEG)。
let imageData: [Data]...
我已经有这两个框架/ Pod:Zip 和 ZIPFoundation
我有几个问题:
- 我需要为我的每个 imageData 创建一个临时 URL?
- 如果是,我必须在调用
data.write(to: tempURL)之前或之后将tempURL.appendingPathExtension("jpg")添加到每个临时 URL 中?
之后,我有一个 URL 数组,所以我只需要创建一个 Zip 文件并共享它。但它不起作用,我的 Mac 上有一个 .zip - .cpgz 循环。
private func createURLsFrom(imageData: [ImageData]?) {
var urlArray = [URL]()
imageData?.forEach { imData in
if let data = imData.imageData,
let tempURL = NSURL.fileURL(withPathComponents: [NSTemporaryDirectory(), NSUUID().uuidString])?.appendingPathExtension("jpg") {
do {
try data.write(to: tempURL)
urlArray.append(tempURL)
} catch {...}
}
}
self.createZipFile(urlArray: urlArray)
}
private func createZipFile(urlArray: [URL]) {
if let zipURL = try? Zip.quickZipFiles(urlArray, fileName: "ZIP_Test1") {
self.sendEmailWith(dataURL: zipURL)
} else {...}
}
private func sendEmailWith(dataURL: URL) {
if MFMailComposeViewController.canSendMail() {
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
mailComposer.setSubject("setSubject")
mailComposer.setMessageBody("setMessageBody", isHTML: false)
mailComposer.addAttachmentData(dataURL.dataRepresentation, mimeType: "application/zip", fileName: ("ZIP_Test1.zip"))
self.present(mailComposer, animated: true, completion: nil)
}
}
我做错了什么:(
【问题讨论】:
-
与您的问题无关,但您应该开始捕捉错误而不是忽略它们。
-
我发现了错误,但我为这篇文章发表了评论。
-
您不应一次在内存中加载多个图像。尝试将它们保存到非临时的本地目录中
-
我应该创建一个只有一个图像文件的 zip 文件吗?
-
我不明白你的意思。不要将图像数据附加到数组中,而是将它们保存到文件夹中。他们可以将所有这些文件 url 传递给您的 create zip 方法。您还可以压缩保存图像的整个文件夹。
标签: swift core-data uiimage nsdata