[iPhone Xcode]我如何获得模拟器/设备上的资源路径?

问题描述:

如何在模拟器和设备上获取我的资源? 我有这样的代码: [code] NSString * tytul = [NSString stringWithUTF8String:tytul_c];[iPhone Xcode]我如何获得模拟器/设备上的资源路径?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:tytul]; 

const char *sciezka; 
if (![[NSFileManager defaultManager] fileExistsAtPath:tytul]) 
{ 
    NSString *stringWithoutTXT = [tytul stringByReplacingOccurrencesOfString:@".txt" withString:@""]; 


    NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:stringWithoutTXT ofType:@"txt"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    NSLog(@"%@",myPathDocs); 

    //sciezka = [myPathDocs UTF8String]; 
    sciezka = [myPathInfo UTF8String]; 
    return sciezka; 
} 

[/代码]

和正常工作的设备上,但不是在模拟器。我该如何解决它? 我应该在哪里放置我的资源?现在,我将它们放在项目文件夹中的文档中。可以吗?

+1

你能在第二行之后做一个NSLog(“%@”,documentsDirectory)并说出你看到的是什么吗? – 2010-07-05 01:15:12

你在某种程度上混合资源和文档/ tempfiles。

资源是一个文件,您添加到您的XCode项目中,并在您的目标“复制束资源”构建阶段中列出。资源中没有子文件夹,但可以将资源添加为资源,而资源又包含其他资源。你会得到如下路径的NSString:

[[UIBundle mainBundle] pathForResource:@"filename" ofType:@"extension"]; 
[UIBundle bundleWithPath:[[UIBundle mainBundle] pathForResource:@"subbundle" ofType:@"bundle"] pathForResource:@"filename" ofType:@"extension"]; 

文档,临时文件和缓存是由应用程序在运行时写入的文件。这些通常存储在您通过NSSearchPathForDirectoriesInDomains访问的目录之一中。

您的代码应该给你的前三行后的路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:tytul]; 

如果要检查该文件是否存在,你应该使用myPathDocs而不是tytul,其中只包含文件名或相对路径。

if (![[NSFileManager defaultManager] fileExistsAtPath:myPathDocs]) 
{ 
    return [myPathDocs UTF8String]; 
} 
return NULL; 
+0

正是我所需要的 – AlexC 2013-09-26 19:57:49