NSFilePromiseReceiver NSURL истекло с почтовым приложением Apple - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь получить .eml файлы электронных писем с помощью перетаскивания из mail.app Apple. Mail.app дает вам файловые обещания через перетаскивающий монтажный щит для их получения Вот мой код для обработки этих обещаний:

override func performDragOperation(_ sender: NSDraggingInfo) -> Bool {

    let pasteboard: NSPasteboard = sender.draggingPasteboard

    guard
      let filePromises = pasteboard.readObjects(
        forClasses: [NSFilePromiseReceiver.self], options: nil) as? [NSFilePromiseReceiver]
    else {
      return false
    }

    print("Files dropped")

    let operationQueue = OperationQueue()
    print("Destination URL: \(destinationURL)")

    filePromises.forEach({ filePromiseReceiver in
      filePromiseReceiver.receivePromisedFiles(
        atDestination: destinationURL,
        options: [:],
        operationQueue: operationQueue,
        reader: { (url, error) in
          if let error = error {
            dump(error)
          } else {
            print("Received file at url \(url)")
          }
          print(filePromiseReceiver.fileNames, filePromiseReceiver.fileTypes)
        })
    })
    return true
  }

(и вот пример проекта, который демонстрирует проблему - https://github.com/svenewers/DropTestArticle)

Дело в том, что это работает просто отлично когда я перетаскиваю почту из любого другого приложения электронной почты (например, Outlook), но когда письма приходят из Apple Mail, происходит что-то странное:

Файлы eml записываются в мой destinationURL, и я вижу, что они Вы находитесь в Finder, но блок кода reader: { (url, error) in в моем коде никогда не получает их URL. Вместо этого он сидит в ожидании примерно ровно 60 секунд, а затем выдает мне следующую ошибку:

- Error Domain=NSURLErrorDomain Code=-1001 "(null)" #0

Что, очевидно, означает, что время ожидания экземпляра NSURL истекло.

Кто-нибудь знает, что это вызывает и как я могу решить это? Это проблема, вызванная моим кодом или неправильным поведением почтового приложения Apple?

...