2016-09-25 6 views
0

У меня есть приложение, которое использует UIDocument и записывает 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, появится пункт меню «Показать содержимое пакета» правой кнопкой мыши. (Хотя он есть для того же файла на диске icloud).

Кроме того, если я попытаюсь открыть это приложение электронной почты на iphone, мое приложение не сможет найти подпуть в завернутый файл. (поэтому мой файл называется bla.myextension, а метаданные должны быть в bla.myextension/meta.xml, но файл, который находится в папке «Входящие», как представляется, является «файлом», а не каталогом.

Что происходит .Это электронное письмо как-то автоматически застегивает вещи?

ответ

0

Файл действительно застегнут автоматически. Поэтому в 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.... 
       } 

      } 
Смежные вопросы