繁体   English   中英

MacOS:如何/在我的应用程序文件夹中存储以编程方式创建的文件?

[英]MacOS: How/where do I store a programmatically created file within my app folder?

对 MacOS 开发来说非常新(如,全新)。 我开发了一个 MacOS 应用程序(SwiftUI / Swift),现在正在弄清楚与部署相关的事情。

我的应用程序会生成一个文本文件,但我想将其保存在应用程序的文件夹(或其他任何名称)中 - 而不是用户指定的文件夹中,并在需要时阅读它。 我可以从Assets.xcassets中读取资源,但我也希望能够在不让用户选择位置的情况下进行保存。

有没有办法可以从应用程序文件夹中写入/读取(我很难解释,因为我对这个系统非常不熟悉)?

是的,您可以在应用程序支持文件夹中创建一个目录,使用应用程序的捆绑标识符或您的公司对其进行命名,并将用户无法访问的所有文件存储在那里:

使用此目录存储除与用户文档相关联的所有应用程序数据文件。 例如,您可以使用此目录来存储应用程序创建的数据文件、配置文件、模板或其他由应用程序管理的固定或可修改资源。 应用程序可能会使用此目录来存储最初包含在应用程序 bundle 中的资源的可修改副本 游戏可能会使用此目录来存储用户购买并从服务器下载的新关卡。 此目录中的所有内容都应放在一个自定义子目录中,该子目录的名称是您的应用程序包标识符或您的公司的名称。

您应该花一些时间阅读文件系统基础文档

do {
    let applicationSupport = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
    let bundleID = Bundle.main.bundleIdentifier ?? "company name"
    let appSupportSubDirectory = applicationSupport.appendingPathComponent(bundleID,isDirectory: true)
    try FileManager.default.createDirectory(at: appSupportSubDirectory, withIntermediateDirectories: true, attributes: nil)
    print(appSupportSubDirectory.path) // /Users/.../Library/Application Support/YourBundleIdentifier
} catch {
    print(error)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM