[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;
}
[/代码]
和正常工作的设备上,但不是在模拟器。我该如何解决它? 我应该在哪里放置我的资源?现在,我将它们放在项目文件夹中的文档中。可以吗?
答
你在某种程度上混合资源和文档/ 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
你能在第二行之后做一个NSLog(“%@”,documentsDirectory)并说出你看到的是什么吗? – 2010-07-05 01:15:12