【问题标题】:NSURLThumbnailDictionaryKey empty for local file本地文件的 NSURLThumbnailDictionaryKey 为空
【发布时间】:2015-02-09 18:59:06
【问题描述】:

我想获得必须在我的应用程序中显示的文件的缩略图表示。我在这里使用 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

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

【问题讨论】:

    标签: cocoa icloud nsurl osx-yosemite appkit


    【解决方案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];
    

    【讨论】:

    • 谢谢。它是否在任何地方记录了 API 的行为方式(即 getResourceValue 仅适用于 iCloud 中的文件)?我环顾四周,但没有得到任何确认。
    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多