NSFilePromiseReceiver Время ожидания NSURL истекло с почтовым приложением Apple
Я пытаюсь получить .eml
файлы электронных писем с помощью перетаскивания из Apple mail.app. 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 записываются на мой URL-адрес назначения, и я вижу, что они есть в Finder, но reader: { (url, error) in
блок кода в моем коде никогда не получает свои URL-адреса. Вместо этого он сидит там и ждет примерно 60 секунд, а затем выдает мне следующую ошибку:
- Error Domain=NSURLErrorDomain Code=-1001 "(null)" #0
Это, по-видимому, означает, что экземпляр NSURL каким-то образом истек.
Кто-нибудь знает, что вызывает это и как я могу это решить? Это проблема, вызванная моим кодом или неправильным поведением приложения Apple Mail?