相当不言自明。
我们可以通过“窗口”>“设备”查看应用程序的文档、库、tmp 目录(一直如此)。
但是当应用程序扩展在 iOS8 中出现时,应用程序组共享容器也随之而来。如何查看其内容?
编辑:澄清一下,我不是问如何在代码中与此目录交互。我问的是如何在 Finder 上下文中与此目录交互。
获取应用程序组路径
#define APP_GROUP_PATH [[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"yourGrpupId"] path]
以下代码查看共享容器数据
NSLog(@"Shared container data:%@",[self listFileAtPath:APP_GROUP_PATH]);
-(NSArray *)listFileAtPath:(NSString *)path
{
int count;
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
for (count = 0; count < (int)[directoryContent count]; count++)
{
NSLog(@"File %d: %@", (count + 1), [directoryContent objectAtIndex:count]);
}
return directoryContent;
}
您可以在代码中打印目录的路径,然后使用
Shift
+CMD
+G
在查找器中打开路径。
print(urlToAFileInTheDirectory.absoluteString)
其中
urlToAFileInTheDirectory
是 URL
,其中包含共享文档目录中文件的路径。
这适用于 Xcode 13 中的模拟器。我不确定它是否适用于实际设备。
appGroupContainer 在所有登录同一 Apple ID 的设备之间共享,因此您只需使用 iOS 模拟器即可访问实际设备使用的容器。内容可在 Finder 中访问。在我的 iOS 应用程序中,我有以下
FileManager
扩展:
extension FileManager {
var groupIdentifier: String { "group.com.braysoftware.MySharedContainer" }
/// Location of documents on device that can be backed-up to iCloud if enabled.
var localDocumentsDirectory: URL {
self.urls(for: .documentDirectory, in: .userDomainMask).last!
}
/// Location of shared documents between app and extension
var sharedDocumentsDirectory: URL {
guard let url = self.containerURL(forSecurityApplicationGroupIdentifier: groupIdentifier) else {
return localDocumentsDirectory
}
if !self.fileExists(atPath: url.path) {
try? self.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
}
return url
}
}
在应用程序启动时,我打印出
FileManager.default.sharedDocumentsDirectory
的值。如果在模拟器中运行,该路径将是您 macOS 设备上的路径,您可以在 Finder 中轻松访问它。
您无法以查找器的方式与其精确交互。尽管您可以查看容器并下载它。
您还可以显示或下载容器。