我有点迷失在我的追求——
- 下载 CKAsset(PDF 文件)
- 分配临时文件名
- 将CKAsset的内容写入文件名
我已经设法下载了 CKAsset 并在 UIWebView 中显示了内容,但是我在第 2 步和第 3 步中遇到了麻烦,我有一个来自字符串的文件名,尽管尝试了各种 WriteToFile 组合,但我收到了错误。
我的代码是这样的:
let filename = record.object(forKey: "materialsFilename")
if materialsType == "PDF" || materialsType == "pdf" {
if let asset1 = record.object(forKey: "materialsFile") as? CKAsset {
let doc1Data : NSData? = NSData(contentsOf:asset1.fileURL)
let path = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(filename as! String)
let contentsOfFile = doc1Data
var error: NSError?
// Write File
if contentsOfFile.writeToFile(path, atomically: true, encoding: String.Encoding.utf8, error: &error) == false {
if let errorMessage = error {
print("Failed to create file")
print("\(errorMessage)")
}
} else {
print("File \(filename) created at tmp directory")
}
此版本出现错误 -
无法使用类型为“(URL?,原子:Bool,编码:String.Encoding,错误:inout NSError?)”的参数列表调用“writeToFile”
一旦创建的临时文件将被传递给 UIActivityViewController,以打印/电子邮件/空投 PDF,只有一个 CKAsset 名称,UIActivityViewController 无法将文件类型与任何用户安装的应用程序相关联,保存以供打印。