保存为包(使用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.... 
       } 

      }