gpt4 book ai didi

macos - 使用 URLForDirectory 而不是 FFSfindFolder 定位 Mac OS X 文件夹

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

我有一些旧代码,可以使用旧的 FSFindFolder 例程查找特定文件夹。现在我的任务是使这段代码现代化。起初,使用 NSFileManagerURLForDirectory 似乎是正确的选择。不幸的是,我发现URLForDirectory不再支持您可以使用FSFindFolder找到的许多文件夹。

您可以使用FSFindFolder找到的文件夹列表非常长,而且其中大多数对我来说没有用。

以下是我确实需要转换的 FSFindFolder 常量及其 URLForDirectory 等效项的部分列表:

FSFindFolder                    URLForDirectory
============================== ===============
kDesktopFolderType NSDesktopDirectory
kCachedDataFolderType NSCachesDirectory
kApplicationSupportFolderType NSApplicationSupportDirectory
kTemporaryFolderType located by calling NSTemporaryDirectory()
kCurrentUserFolderType located by calling NSHomeDirectory()
kSystemFolderType Not Available
kPreferencesFolderType Not Available
kTrashFolderType Not Available
kAudioComponentsFolderType Not Available
kVolumeRootFolderType Not Available
kSharedUserDataFolderTypeNo Not Available

我的问题:是否有一种标准方法可以在不使用 FSFindFolder 的情况下找到每个标记为“不可用”的文件夹的路径?

最佳答案

我建议,在大多数情况下,现代化代码意味着放弃您最初使用这些文件夹位置的任何内容。例如,在现代代码中,kSystemFolderType 的等效项没有太多合法用途。您应该检查使用这些的每种情况,并询问什么是正确的解决方案来解决旧实现正在解决的高级问题。

如果您确实需要其中某些文件夹的路径,最好的办法是查看 FSFindFolder() 给出的路径,找到最接近您的 NSSearchPathDirectory ,然后只需编写代码以从 URLForDirectory:... 获取该值,并将差异附加为静态相对路径。

一些具体建议:

kPreferencesFolderType:使用NSUserDefaults来存储首选项;在应用程序支持中存储非默认值

kTrashFolderType:使用 -[NSWorkspace recycleURLs:completionHandler:]-performFileOperation:source:destination:files:tag: >NSWorkspaceRecycleOperation;仅在必要时才将 -[NSFileManager URLForDirectory:...]NSTrashDirectory

一起使用

kVolumeRootFolderType:如果您将其与特定卷引用而不是域一起使用,请使用 -[NSURL getResourceValue:forKey:error:] 和键 NSURLVolumeURLKey

kSharedUserDataFolderType: -URLForDirectory:...NSUserDirectory ,然后附加 @"Shared" 作为路径组件

kAudioComponentsFolderType:组件管理器已弃用;苹果says没有确切的替代品,但出于某些目的 Audio Component Services是合适的。

关于macos - 使用 URLForDirectory 而不是 FFSfindFolder 定位 Mac OS X 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404239/

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