cocoa - 本地文件的 NSURLThumbnailDictionaryKey 为空

标签 cocoa icloud nsurl osx-yosemite appkit

我想获取必须在我的应用程序中显示的文件的缩略图。我在这里使用 NSURL:

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

如果我连接到 iCloud,并且 URL 是指向 iCloud 中存储的文件的链接,则效果很好。文件 URL 类似于:

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

这个 getResourceValue API 不应该与本地存储的文件一起使用吗?还是我做错了什么?

最佳答案

这是 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];

关于cocoa - 本地文件的 NSURLThumbnailDictionaryKey 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420380/

相关文章:

cocoa - NSToolbarItem 可用性基于 OS X 版本

cocoa - 绘制到 NSImage 时设置颜色

macos - 快速识别哪个 NSTextFields 正在编辑

ios - AFHTTPRequestOperation无响应而不是错误

objective-c - 在 NSURL 中替换

cocoa - 沙盒应用程序中的 NSOpenPanel 忽略提供的目录 URL

objective-c - NSDictionary 的 objectForKey 是否为 : rely on identity or equality?

iphone - 如何删除 iCloud 文件?

ios - Apple 批准将所有用户数据(包括图像)保存到 iCloud

ios - 在 iCloud 上保存游戏进度 : best solution?