2014-12-11 2 views
4

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

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 не должен работать с локально сохраненными файлами? Или я делаю что-то неправильно?

ответ

3

Это часть 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]; 
+0

Спасибо. Документировано ли это где угодно, как это должно верить API (т. Е. GetResourceValue работает только для файлов в iCloud)? Я огляделся, но не смог получить подтверждения. –