NSURLThumbnailDictionaryKey пусто для локального файла

Я хочу получить миниатюрное представление файла, который должен отображаться в моем приложении. Я использую NSURL здесь:

NSDictionary *thumbnails = nil;
BOOL success = [fileURL getResourceValue:&thumbnails
                                          forKey:NSURLThumbnailDictionaryKey
                                           error: &error];

Это прекрасно работает, если я подключен к iCloud, а URL-адрес является ссылкой на файл, хранящийся в iCloud. FileURL это что-то вроде:

file:///Users/me/Library/Mobile%20Documents/BJXXGLR9R3~com~myapp~icloud/FileStorage/contact-page%20copy.png

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

Вот пример URL в этом случае:

file:///Users/me/Library/Containers/com.mycompany.mymacapp/Data/Library/Application%20Support/com.mycompany.mymacapp/FileStorage/Bn4VaCnCUAEJjLb.png-large.png

Этот API для getResourceValue не должен работать с локально сохраненными файлами? Или я что-то не так делаю?

1 ответ

Это часть API. Кроме того, вы должны использовать координатор файлов при работе с файлами, поступающими из iCloud:

    [url startAccessingSecurityScopedResource];

NSFileCoordinator *coordinator = [[NSFileCoordinator alloc] init];
__block NSError *error;
[coordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {
    [newURL getResourceValue:&image forKey:NSURLThumbnailDictionaryKey error:&error];
}];

[url stopAccessingSecurityScopedResource];
Другие вопросы по тегам