gpt4 book ai didi

objective-c - NSBundle,可以用来保存项目文档吗?

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

我正在构建一个可用于创建“项目”的 Mac OS X 应用程序。当用户保存项目时,他们将保存许多资源:图像文件、文本文件、sqlite 文件等。

我可以在文档中为每个项目创建一个文件夹,在该文件夹中我可以放置所有项目资源,并且只包含用于打开项目的单个项目文件。

我读过有关 NSBundle 的内容,我想使用它。但我只在应用程序包的上下文中读到过它们。可以这样使用 NSBundle 吗?用户只能看到一个文件,并且可以将其移动到任何他们喜欢的地方。

使用 NSBundle 做我正在尝试的事情有意义吗?或者还有其他方法可以做到这一点吗?

(我对 MacOS X 编程相当陌生)

更新

我相信 iPhoto 使用此方法来存储“iPhoto Library”,这就是我想对我的应用程序执行的操作,NSBundle 是我应该研究的吗?

最佳答案

是的,这是可能的,并且过去在很多应用程序中都使用过。该方法在this document中描述。 。在应用的 Info.plist 中明确声明后,Finder 会将生成的 bundle 显示为一个文件。

但是,我不建议您这样做。苹果自己的Keynote过去使用的是捆绑方式,但现在不再使用它了。同样,OmniGraffle(这是 OS X 上的一个历史悠久的图表应用程序)使用 bundle 来保存项目,但它也停止这样做了。

原因是,尽管 Finder 将其显示为文件,但非 Apple 电子邮件软件或任何浏览器等仍将 bundle 视为目录。例如,如果用户想要将捆绑格式的文档附加到她/他在浏览器内的 Gmail 中撰写的电子邮件中,那就会很困惑。这让很多人感到困惑。

所以,这是可能的,但我不推荐它。一种解决方法是使用压缩包作为用户可见的文件,并在用户将其打开到临时目录时将其解压缩。然后你可以使用 NSBundle 和/或 NSFileWrapper api 来访问其中的文件。

关于objective-c - NSBundle,可以用来保存项目文档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4814234/

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