保存为包(使用filewrappers)和icloud驱动器的文件,是否在通过电子邮件发送时进行压缩?
问题描述:
我有一个使用UIDocument和写入数据使用的filewrappers应用:保存为包(使用filewrappers)和icloud驱动器的文件,是否在通过电子邮件发送时进行压缩?
public override func contents(forType typeName: String) throws -> Any {
print("******writing the contents******")
print("**** typeName = \(typeName)")
let result = FileWrapper(directoryWithFileWrappers: [:])
... lots more....
}
这其实工作正常。我也在我的plist文件的uti。该文件可以保存,复制到icloud驱动器,导入回到应用程序,迄今为止好....
但现在的困难部分:Icloud驱动器有一个电子邮件按钮。如果我通过该按钮向我自己发送工作文件,并将文件保存在Mac上,则右键单击菜单选项“show package contents”已不存在。 (虽然它在icloud驱动器中的相同文件存在)。另外,如果我尝试在iphone上打开此邮件附件,我的应用程序无法找到包装文件中的子路径。 (所以我的文件被称为bla.myextension,并且元数据应该位于bla.myextension/meta.xml中,但收件箱中的文件似乎是“文件”而不是目录。
发生了什么。是电子邮件莫名其妙地自动压缩和解东西?
答
文件确实会自动拉上,所以在application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:])
只是检查,如果结果是一个目录,因为icloud的驱动开口可以给你解压缩的结果。如果它是一个目录,然后你必须自己解压缩。
var isDir : ObjCBool = ObjCBool(false)
if fileManager.fileExists(atPath: url.path, isDirectory: &isDir) {
if isDir.boolValue {
...copy directory...
}
else {
...unzip and copy....
}
}