如何访问项目中的本地文件

chi*_*zle 24 iphone xcode bundle objective-c ios

我想在我的应用程序中添加一些静态文件(图像,二进制等).我把它们放在一个名为的文件夹下Resources,并将它添加到我的XCode项目中.

接下来,我将这些文件添加到项目设置Copy Bundle ResourcesBuild Phases选项卡中.

但是,我似乎无法以正确的方式提及它们.

例如,读取二进制文件:

NSInputStream *is = [[NSInputStream alloc] initWithFileAtPath:@"data.bin"];
if(![is hasBytesAvailable]) NSLog(@"wrong");
Run Code Online (Sandbox Code Playgroud)

这总是失败并打印 wrong

我尝试了类似的方法,NSData initWithContentsOfFile:但这甚至都不会执行.另一种尝试是使用,[NSBundle mainBundle]但这也没有完全执行.

我是iOS的新手,请帮助我访问我的本地文件!任何帮助,将不胜感激.

谢谢,

Jim*_*yes 30

您需要确保在正确的位置访问该文件.Xcode将资源文件放在Resources目录中的应用程序的"应用程序包"中.有很多方法可以挖掘它们.

一种常见的方法是获取包中文件的路径名:

NSBundle *mainBundle = [NSBundle mainBundle];
NSString *myFile = [mainBundle pathForResource: @"data" ofType: @"bin"];
Run Code Online (Sandbox Code Playgroud)

如果您的捆绑包中有非标准位置的其他文件,则pathForResource会有变体,您可以指定目录名称.

如果你想查看模拟器正在使用的硬盘上的实际位置,你可以检查它,你可以说:

NSLog(@"Main bundle path: %@", mainBundle);
NSLog(@"myFile path: %@", myFile);
Run Code Online (Sandbox Code Playgroud)

在Xcode文档库中搜索"Bundle Programming Guide"以开始使用.:-)