如何在模拟器和设备上获取我的资源路径? 我有这个代码: [码] NSString * tytul = [NSString stringWithUTF8String:tytul_c];
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;
}
[/代码]
它在设备上工作正常但不在模拟器上。我该如何解决? 我应该把资源放在哪里?现在,我把它们放在Documents,在项目文件夹中。可以吗?
答案 0 :(得分:3)
你在某种程度上混合了资源和文档/临时文件。
资源是一个文件,您可以将其添加到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;