gpt4 book ai didi

ios - 如何访问组共享文件夹中的 NSCachesDirectory 目录?

转载 作者:可可西里 更新时间:2023-11-01 03:59:09 24 4
gpt4 key购买 nike

是否有正确的方法来访问容器应用程序及其扩展的共享目录中的 NSCachesDirectory?

NSURL *sharedDirectory = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:APPS_GROUP_NAME];

这之后获取“/Library/Caches/”的正确方法是什么?

最佳答案

我发现这两种方法非常有用。您必须#define g_groupName 才能成为您的共享应用组。 CachesDirectory 将首先选择共享应用程序组缓存文件夹,然后回退到应用程序特定的缓存文件夹。 CachesDirectoryLocal 始终返回应用特定的缓存文件夹。希望这对您有所帮助!

#define g_groupName @"group.com.yourdomain.yourapp"
#define DISPATCH_ONCE(var, code) static dispatch_once_t onceToken; var dispatch_once(&onceToken, ^{ code });
#define FILE_MANAGER ([[NSFileManager alloc] init])

NSString* CachesDirectory()
{
DISPATCH_ONCE(static NSString* s_cacheFolderForGroup = nil;,
{
if (g_groupName.length != 0)
{
s_cacheFolderForGroup = [FILE_MANAGER containerURLForSecurityApplicationGroupIdentifier:g_groupName].path;
s_cacheFolderForGroup = [s_cacheFolderForGroup stringByAppendingPathComponent:@"Library/Caches/"];
[FILE_MANAGER createDirectoryAtPath:s_cacheFolderForGroup withIntermediateDirectories:YES attributes:nil error:nil];
}
});

if (s_cacheFolderForGroup.length != 0)
{
return s_cacheFolderForGroup;
}

return CachesDirectoryLocal();
}

NSString* CachesDirectoryLocal()
{
DISPATCH_ONCE(static NSString* s_cacheFolder = nil;,
{
NSArray* docDirs = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
if (docDirs.count != 0 && [[docDirs objectAtIndex:0] isKindOfClass:NSString.class])
{
s_cacheFolder = (NSString*)[docDirs objectAtIndex:0];
if (![s_cacheFolder hasSuffix:@"/"])
{
s_cacheFolder = [s_cacheFolder stringByAppendingString:@"/"];
}
}
else
{
s_cacheFolder = @"./Library/Caches/";
}
});

return s_cacheFolder;
}

关于ios - 如何访问组共享文件夹中的 NSCachesDirectory 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599241/

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