Я пытаюсь, но мне не удается использовать код ошибки NSFileProviderErrorInsufficientQuota.
Установка uploadingError для элементов на что-то вроде:
let userInfo: [String:Any] = [NSURLErrorKey: NSURL(string: "https://my.domain.net/purchase-quota/")!,
NSLocalizedDescriptionKey: "Out of quota!"]
return NSError(domain: NSFileProviderError.errorDomain,
code: NSFileProviderError.Code.insufficientQuota.rawValue,
userInfo: userInfo)
В приложении "Файлы" есть немного "Ошибка загрузки"под именем файла, но у пользователя нет возможности узнать больше.
Просматривая Улучшения провайдера файлов видео с WWDC 2017, докладчик говорит, что:
В случае постоянной ошибки, например, когда у пользователя нет квоты, вам нужно сказать ему: эй, у вас нет квоты.Вы должны пойти и купить больше квоты на нашей веб-странице.И в этой ситуации, в основном, вы даете нам ошибку, которая предлагает вариант восстановления.
Это намекает на использование recoveryAttempter на NSError, и я попробовал что-то вроде:
let userInfo: [String:Any] = [NSRecoveryAttempterErrorKey: TestErrorRecovery(),
NSLocalizedRecoveryOptionsErrorKey: ["Retry", "Cancel"]]
Это приводит к тому, что приложение «Файлы» в журнале жалуется на то, что Exception: decodeObjectForKey: класс «Provider.TestErrorRecovery» не загружен или не существует
, вероятно, потому что ошибка NSError передается из одного процесса в другой.
ЭтоКажется, среда File Provider имеет особую поддержку для пользователей вне квоты, но я не могу найти никакой документации или примеров, показывающих, как именно это можно использовать.
Кто-нибудь знает, как на самом деле сделать что-то разумное, когда пользователь отсутствуетквоты или можете ссылки на примеры?