gpt4 book ai didi

objective-c - 在设备上找不到 NSBundle 文件夹,但在模拟器中工作

转载 作者:太空狗 更新时间:2023-10-30 03:55:29 32 4
gpt4 key购买 nike

我正在编写的 iPad 应用程序遇到了一个非常奇怪的问题。在启动时,我想将一个包含一些其他文件夹(为空)的文件夹从应用程序包复制到 Documents 目录。要复制的文件夹名为“flds”(全部小写),已使用“为任何添加的文件夹创建文件夹引用”添加到 Xcode 4 项目中,我已检查它在编译后实际上是 .app 文件的一部分。 (并且在尝试复制时它还不存在。)

我已经尝试使用以下任一调用(它们都有效)进入“flds”文件夹:

[[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"flds"]
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flds"]
[[NSBundle mainBundle] pathForResource:@"flds" ofType:@""]

然后使用 NSFileManager 的 copyItemAtPath:toPath:error: 方法进行复制(或使用 URL 而不是路径字符串时的 URL 等价物)。

所有这些策略在 iPad 模拟器和 iPad 设备上都能完美运行,但有以下异常(exception):当我(成功)为 Ad Hoc 分发构建时,将 .app 和 .mobileprovision 拖到 iTunes 中,同步然后运行设备上的应用程序,系统不再认为“flds”文件夹存在!我一直试图检查这个很多小时,但没有运气。同样,我非常确定它在模拟器和从 Xcode 运行的设备上都能正常工作,但在通过 iTunes 同步时却不行。

想法?

我发现在通过 iTunes 同步 iPad 应用程序后,以下调用也成功获取了文件夹路径:

[[NSBundle mainBundle] pathForResource:@"flds" ofType:nil inDirectory:nil]

但是,当我使用此路径将文件夹复制到 Documents 目录中的新位置时,只有文件夹本身和其中的 .txt 文件(我把它放在那里作为测试,它实际上不应该是那里)被复制,而不是 6-7 个空子文件夹。同样,相同的模式再次出现:在从 Xcode 运行的模拟器和设备上都按预期工作(成功复制了带有“test.txt”的“flds”文件夹和空子文件夹),但在通过 iTunes 同步时却没有(仅“flds”文件夹带有'test.txt'的被复制,而不是子文件夹)。这真的是 copyItemAtPath:toPath:error: 的预期行为吗?为什么在通过 iTunes 同步后它的行为会有所不同?

最佳答案

最后我发现 copyItemAtPath:toPath:error: 不会复制空文件夹,尽管我认为它应该这样做。同样,此行为仅在通过 iTunes 将应用程序同步到 iPad 后发生(从 Xcode 运行时它确实复制了空文件夹)。我目前的解决方案是简单地在每个子文件夹中放置一个虚拟文本文件,这样它们就不再是空的了。

关于objective-c - 在设备上找不到 NSBundle 文件夹,但在模拟器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018832/

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