如何在iPhone应用程序中获取文件路径

如何在iPhone应用程序中获取文件路径,iphone,ios,xcode,path,Iphone,Ios,Xcode,Path,我在应用程序中访问文件时遇到问题 我目前正在使用 //Directly from TileMap example from WWDC2010 NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"]; 访问myMKOverlay的互动程序。这给了我这个目录 /用户/xxxx/Library

我在应用程序中访问文件时遇到问题

我目前正在使用

//Directly from TileMap example from WWDC2010
NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath] 
                           stringByAppendingPathComponent:@"Tiles"];
访问my
MKOverlay
的互动程序。这给了我这个目录

/用户/xxxx/Library/Application Support/iPhone Simulator/4.2/Applications/9D62025C-C53B-472C-8309-xxxx/xxxx.app/Tiles

x只是出于隐私原因

我在应用程序根目录中名为
tiles
的文件夹中有我的tiles,该文件夹位于名为
tiles
的组中的Xcode中,该组直接位于
资源组中

当我运行我的应用程序时,我得到一个简单的错误,如果我替换代码并使其:

NSString *tileDirectory = @"/Users/xxxx/Documents/xxxx/Tiles";
然后我的应用程序工作正常。这显然是因为它在Mac上的直接位置找到了我的磁贴。这对于测试来说很好,但我需要它在我的iPhone/iPad上工作

发生此问题的原因可能是:

  • 生成的目录不正确
  • 生成的
    .app
    文件中未包含磁贴图像
不管怎样,我都不知道该怎么解决它

我怎样才能解决这个问题


[编辑]

我将该代码更改为:

NSString *tileDirectory = [[NSBundle mainBundle] resourcePath];
现在它在模拟器中工作,因为所有文件都在apps根文件夹中,我不要求它进入另一个名为“Tiles”的目录

这在模拟器上运行时没有错误,但在我的iPhone上,它会给出原始错误(只是不同的文件路径,但也以
/xxxx.app

我如何确保我的应用程序文件中有一个目录,例如
xxxx.app/Tiles
-TileMap可以做到这一点。

记住“文件夹/组”你在xcode中创建,淡黄色的不会在你的iPhone应用程序中反映为真实的文件夹。它们只是用来组织你的xcode项目。你可以根据需要嵌套任意多个黄色组,它们仍然只用于在xcode中组织代码

编辑
在XCode之外创建一个文件夹,然后将其拖到上面,然后选择“为任何添加的文件夹创建文件夹引用”,而不是“为任何添加的文件夹创建组”在弹出窗口中。

您需要将互动程序添加到资源包中。我的意思是将所有这些文件添加到您的项目中。确保选中“将所有文件复制到项目目录”选项。

如果您的互动程序不在您的资源包中,则可以从资源包中复制或从internet下载,您可以获得如下目录

NSString *documentdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *tileDirectory = [documentdir stringByAppendingPathComponent:@"xxxx/Tiles"];
NSLog(@"Tile Directory: %@", tileDirectory);

由于它是应用程序包中的文件,我认为您可以使用
pathForResource:ofType:
获取文件的完整路径名

以下是一个例子:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"your_file_name" 
                                            ofType:@"the_file_extension"];

您需要使用链接的URL,例如:

NSURL *path = [[NSBundle mainBundle] URLForResource:@"imagename" withExtension:@"jpg"];

它将为您提供正确的URL参考。

您肯定走对了方向!(谢谢)我到底该如何确保我的目标中有一个目录是
Tiles
?TileMap做到了,但我似乎看不出苹果是如何做到的…工作得很完美!谢谢!PS:现在我也明白递归组/文件夹引用更好了。谢谢!啊,谢谢你,我花了半个小时研究文件路径,然后才无意中找到这个答案并点击g我自己在头脑中思考我在Xcode中创建的这些文件“组”不是真正的文件夹…你如何通过引用获得它?如果我的文件不在捆绑包中,而是在ionic project中,该项目具有
ios
android
平台。因此在一类ios文件夹中,我提到了文件,那么我如何才能做到这一点,我尝试了这个方法,给出了错误