Добавление миниатюры с изображения в приложении UIDocument - PullRequest
0 голосов
/ 29 апреля 2019

Я пытался добавить эскиз к значку для приложения UIDocument.Пример, который я привел, относительно прост.Назначение изображения для thumbnailDictionaryKey путем переопределения функции fileAttributesToWrite из класса UIDocument, как показано ниже.

Примечание 1 : self.thumbnail - изображение из моего документа.

Примечание 2 : я видел thumbnailDictionaryKey с и безrawValue добавлено в конце.Я не вижу разницы, когда я запускаю его.

override func fileAttributesToWrite(to url: URL, for saveOperation: UIDocument.SaveOperation) throws -> [AnyHashable : Any] {

    var attributes = try super.fileAttributesToWrite(to: url, for: saveOperation)
    print("in fileAttributes")
    if let thumbnail = self.thumbnail {
        attributes[URLResourceKey.thumbnailDictionaryKey.rawValue] =
        [URLThumbnailDictionaryItem.NSThumbnail1024x1024SizeKey:thumbnail]
    }

    return attributes
}

Код компилируется, но не показывает изображение на миниатюре, как требуется.В файловом менеджере iOS это все еще значок приложения.

Одна вещь, которую я заметил, это то, что я не вижу, как выполняется функция fileAttributesToWrite.(Для проверки этого есть строка печати.)

Есть ли шаг, который я пропускаю?Нужно ли мне fileAttributesToWrite, чтобы его заставили бежать?

1 Ответ

0 голосов
/ 15 мая 2019

Если вы не видите запуска этого кода, похоже, проблема в другом месте?Как вы открываете, сохраняете и закрываете свой документ?

Это сложный API для использования, поскольку он открыт для того, что он может получать, но придирчив к тому, с чем он на самом деле будет иметь дело.Я полагаю, что вам нужно предоставить String для обоих этих ключей и для этого использовать rawValue.

Так что, глядя на ваш пример, для словаря миниатюр также должен быть один

URLThumbnailDictionaryItem.NSThumbnail1024x1024SizeKey.rawValue

Еще одна вещь, которую вы можете попытаться не полагаться на проверку этого в файловом менеджере, это проверить с помощью ресурса url, чтобы посмотреть, сможете ли вы загрузить изображение оттуда.

Что-то вроде этого

var resourceValue: AnyObject?
try (url as NSURL).getPromisedItemResourceValue(&resourceValue, forKey: URLResourceKey.thumbnailDictionaryKey)
let thumbDict = resourceValue as? [String: Any]
t = thumbDict?[URLThumbnailDictionaryItem.NSThumbnail1024x1024SizeKey.rawValue]
...