gpt4 book ai didi

objective-c - 使用 CFBundleDocumentTypes 过滤拖放 NSView

转载 作者:行者123 更新时间:2023-12-03 16:43:42 25 4
gpt4 key购买 nike

我有一个拖放 NSView,它应该接受与我在 plistCFBundleDocumentTypes 键下列出的相同的文件类型和扩展名>。该应用接受 public.movi​​e 类型未选取的任何类型的视频文件、文件夹和多个文件扩展名。

CFBundleDocumentTypes 的(相当长的)列表是:

    <key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>Folder</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>fold</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>Movies</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>public.movie</string>
</array>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>flv</string>
</array>
<key>CFBundleTypeName</key>
<string>Flash Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ram</string>
<string>rm</string>
<string>rmvb</string>
</array>
<key>CFBundleTypeName</key>
<string>RealPlayer Media Files</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>vob</string>
</array>
<key>CFBundleTypeName</key>
<string>VOB File (DVD Video)</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ogm</string>
</array>
<key>CFBundleTypeName</key>
<string>Ogg MPEG-4 Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ogv</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>video/ogg</string>
</array>
<key>CFBundleTypeName</key>
<string>Ogg Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>axv</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>video/annodex</string>
</array>
<key>CFBundleTypeName</key>
<string>Annodex Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>avi</string>
</array>
<key>CFBundleTypeName</key>
<string>AVI container</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mov</string>
<string>moov</string>
<string>qt</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>video/quicktime</string>
</array>
<key>CFBundleTypeName</key>
<string>Apple QuickTime container</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>divx</string>
</array>
<key>CFBundleTypeName</key>
<string>DivX file</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>dv</string>
</array>
<key>CFBundleTypeName</key>
<string>DV file</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>wmv</string>
<string>wm</string>
</array>
<key>CFBundleTypeName</key>
<string>Windows Media Video</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mpg</string>
<string>mpeg</string>
<string>mpeg1</string>
<string>mpeg2</string>
</array>
<key>CFBundleTypeName</key>
<string>multiplexed MPEG-1/2</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>m1v</string>
</array>
<key>CFBundleTypeName</key>
<string>MPEG-1 Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>ts</string>
<string>m2ts</string>
<string>mts</string>
<string>mt2s</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>video/mp2t</string>
</array>
<key>CFBundleTypeName</key>
<string>MPEG-2 Transport Stream</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>m2v</string>
<string>mpv</string>
</array>
<key>CFBundleTypeName</key>
<string>MPEG-2 Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mp4</string>
<string>mpeg4</string>
<string>m4v</string>
</array>
<key>CFBundleTypeName</key>
<string>MPEG-4 File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>3gp</string>
</array>
<key>CFBundleTypeName</key>
<string>3GPP File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>mkv</string>
</array>
<key>CFBundleTypeName</key>
<string>Matroska Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>webm</string>
</array>
<key>CFBundleTypeName</key>
<string>WebM Video File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>nuv</string>
</array>
<key>CFBundleTypeName</key>
<string>NuppleVideo File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSTypeIsPackage</key>
<false/>
<key>NSPersistentStoreTypeKey</key>
<string>Binary</string>
</dict>
</array>

我已经能够在 NSView 的 draggingEntered 方法中验证放置接受情况,但我希望能够运行 CFBundleDocumentTypes 的 Info.plist 条目 而不是复制此方法中的所有条目。如何执行此操作,以便我的 View 接受与 CFBundleDocumentTypes 条目中列出的完全相同的文件?

最佳答案

只需向您的包询问信息即可:

NSArray* documentTypes = [[[NSBundle mainBundle] infoDictionary]
objectForKey:@"CFBundleDocumentTypes"];

这将返回一个字典数组,每个字典对应一种文件类型,您可以从中轻松提取其他信息:

for(NSDictionary* docInfo in documentTypes)
{
NSArray* fileExtensions = [docInfo objectForKey:@"CFBundleTypeExtensions"];
//do something with this info
}

您可以将其与 NSDocumentController-documentClassForType: 方法结合使用。这将 CFBundleTypeName Info.plist 键中的值作为类型。

关于objective-c - 使用 CFBundleDocumentTypes 过滤拖放 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com