gpt4 book ai didi

cocoa - 我如何现代化已弃用的 FSPathMakeRef、FSIsAliasFile、FSResolveAliasFileWithMountFlags、FSRefMakePath

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

我需要帮助来静默弃用:FSPathMakeRefFSIsAliasFileFSResolveAliasFileWithMountFlagsFSRefMakePath
任何帮助将不胜感激。

//1) 已弃用 FSPathMakeRef **//

    error = FSPathMakeRef((UInt8*)[filename fileSystemRepresentation], &ref, &isFolder);
if (error) return NO;

//2) 此处已弃用 FSIsAliasFile *//

    error = FSIsAliasFile(&ref, &isAlias, &isFolder);
if (error) return NO;

if (isAlias)
{
if (isFolder) return YES;

//3) 此处已弃用 FSResolveAliasFileWithMountFlags *//

        error = FSResolveAliasFileWithMountFlags(&ref, true, &isFolder, &isAlias,
kARMMountVol | kARMNoUI | kARMMultVols | kARMSearch);
if (error) return NO;
if (isFolder) return YES;

//4) 此处已弃用 CFURLCreateFromFSRef *//

        fileURL = CFURLCreateFromFSRef(kCFAllocatorDefault, &ref);
filepath = (NSString*)CFBridgingRelease(CFURLCopyFileSystemPath(fileURL, kCFURLPOSIXPathStyle));
CFRelease(fileURL);

最佳答案

现代方法是使用 NSURL 来表示文件位置。因此,您将必须替换 FSRef 的所有使用。 (也就是说,如果您希望将 FSPathMakeRef() 替换为另一个也为您提供 FSRef 的函数,您将会失望。)

因此,您可以使用 +[NSURL fileURLWithPath:]+alloc-[NSURL,而不是 FSPathMakeRef() initFileURLWithPath:].

要替换 FSIsAliasFile(),您可以使用 -[NSWorkspace typeOfFile:error:] 获取类型,然后使用 -[NSWorkspace type:conformsToType: ] 对照 kUTTypeAliasFile 进行检查。

要替换 FSResolveAliasFileWithMountFlags(),您可以使用 NSURL 的“书签数据”功能。首先使用 +bookmarkDataWithContentsOfURL:error: 从文件中获取书签数据,然后使用 +URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error: 进行解析。

您不需要替换 CFURLCreateFromFSRef(),因为您已经有一个 NSURL

关于cocoa - 我如何现代化已弃用的 FSPathMakeRef、FSIsAliasFile、FSResolveAliasFileWithMountFlags、FSRefMakePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870288/

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