目标:
将来自共享扩展名的压缩文本文件传递到容器应用程序。
问题:
我能够从主机应用程序的UIActivityViewController中以NSSecureCoding格式获取压缩文件。但是我不知道如何将其转换为NSData。我需要转换为NSData以便将其保存在UserDefault中。
代码:
override func didSelectPost() {
guard
let content = extensionContext?.inputItems[0] as? NSExtensionItem,
let contents = content.attachments,
let result = contents.first
else {return}
let contentType = "public.zip-archive"
if result.hasItemConformingToTypeIdentifier(contentType) {
result.loadItem(forTypeIdentifier: contentType, options: nil) { (data, err) in
// convert "data"(NSSecureCoding) to NSData variable
}
}
}
我尝试过的解决方案:
Converting NSSecureCoding to NSData - Xcode - Swift 下面列出了本文提供的解决方案。这对我来说是行不通的或没有道理的。
NSData(contentsOfURL: data as! NSURL)
How to extract a zip file and get the extracted components in a Share Extension in Swift
OP的方法与我的需求不符。由于我正在使用的zip文件可能很大。因此,我宁愿在实际的容器应用中处理解压缩。