Iphone fileExistsAtPath API始终返回否

Iphone fileExistsAtPath API始终返回否,iphone,objective-c,cocoa-touch,cocoa,Iphone,Objective C,Cocoa Touch,Cocoa,下面是我的代码,我需要检查文件是否存在于文档目录中,但下面的API在任何情况下都不会返回true,但文件是在文档目录中创建的。请检查我做错了什么。我在另一个网站上搜索过,说这个API“fileExistsAtPath”应该可以工作,但在我的情况下它不工作。请帮帮我 NSString *recordFile=[NSString stringWithFormat:@"MyFile.acc",data.uid]; NSArray *documentPaths = NSSearchPathForDir

下面是我的代码,我需要检查文件是否存在于文档目录中,但下面的API在任何情况下都不会返回true,但文件是在文档目录中创建的。请检查我做错了什么。我在另一个网站上搜索过,说这个API“fileExistsAtPath”应该可以工作,但在我的情况下它不工作。请帮帮我

NSString *recordFile=[NSString stringWithFormat:@"MyFile.acc",data.uid];

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                          NSUserDomainMask, YES);
NSString *documentDr = [documentPaths objectAtIndex:0];     // WHY 0 ?
NSString *uniquePath = [documentDr stringByAppendingPathComponent:recordFile];

if([[NSFileManager defaultManager] fileExistsAtPath: uniquePath])
{

    NSLog(@"File found")

}
else {
    NSLog(@"No File to play");
}
谢谢,
索尼

我注意到的第一个错误是第一条指令。 为什么要将'data.uid'作为参数传递给格式字符串?假设'data.uid'是某种整数,则在

我看了一下苹果的文档,特别是

此方法返回的目录可能不存在

您可以尝试使用NSFileManager方法获取当前目录路径,然后测试文件是否存在(或者在稍后可以轻松检索的位置创建目录)


其他的路呢?您编写了“为什么0?”,我问的问题与您相同。请尝试在数组元素上循环,每次都测试文件是否存在。

您的路径可能不正确。您试图查找的文件的名称应该是什么?如果您有
@“MyFile1.acc”
@“MyFile2.acc”
等(其中1,2是
数据.uid
值),请尝试使用以下方法:


NSString*recordFile=[NSString stringWithFormat:@“MyFile%i.acc”,data.uid]

在定义uniquePath时,尝试在documentDr后添加“/”,或

NSString *recordFile = [NSString stringWithFormat:@"MyFile%@", data.uid];
...
if([NSBundle pathForResource:recordFile ofType:@"acc" inDirectory:documentDr])

代码应该是有效的。您的文件很可能不存在。您在保存文件名时是否正确使用了大写字母? 同样是现在,我仍然不知道文件名是什么,因为,正如前面所说的,你最初文章的第一行没有给出正确的格式字符串。 在检查try是否存在之前,请尝试:

[[NSString stringWithString:@"test"] writeToFile: uniquePath atomically:YES];

这应该会在路径上创建一个文件,你看,这个文件是有效的。

我尝试了很多方法,但最终不得不删除应用程序,清除所有目标,然后重新构建。奇怪的是,我的新资源没有被复制到应用程序中。通常情况下,在添加文件时,我会选择“为任何添加的文件夹创建文件夹引用”。

您的文件不存在,或者您的
记录文件路径错误。这是什么?为什么0的答案是:在Mac OSX中,相同的函数将返回多个路径,而在iOS中,由于其沙盒文件系统结构,只返回一个路径。因此,您必须始终获得数组中的第0个元素。非常好的一点@viggio24,另一件需要提及的事情是,在iOS上,索引0处的对象是数组中唯一的对象,因此它也可能是
[documentPaths lastObject]
,结果将是sameNSString*recordFile=[NSString stringWithFormat:@“%d.acc”,data.uid];这不是问题。对于任何名称和文件格式,API fileExistsAtPath返回否。Eve存在同名文件。我也打印了文件路径,这是正确的。然后,在发送消息之前,API file ExistSatPath返回NOtry使用stringByExpandingTildeInPath,可能问题是由波浪号(~)引起的