API fileExistsAtPath всегда возвращает NO - PullRequest
3 голосов
/ 04 июля 2011

Ниже приведен мой код. Мне нужно проверить, присутствует ли файл в каталоге документов, но следующий 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");
}

Спасибо, Sony

Ответы [ 5 ]

3 голосов
/ 05 июля 2011

Возможно, ваш путь неверен.Какими должны быть имена файлов, которые вы пытаетесь найти?Если у вас есть @"MyFile1.acc", @"MyFile2.acc" и т. Д. (Где 1, 2 - значение data.uid), попробуйте использовать это:

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

1 голос
/ 15 апреля 2012

Попробуйте добавить "/" после documentDr при определении uniquePath или

NSString *recordFile = [NSString stringWithFormat:@"MyFile%@", data.uid];
...
if([NSBundle pathForResource:recordFile ofType:@"acc" inDirectory:documentDr])
0 голосов
/ 03 марта 2013

Я перепробовал много вещей, но в итоге мне пришлось удалить приложение, очистить все цели, а затем заново собрать. Странно, что почему-то мои новые ресурсы не копируются в приложение. С файлами обычно бывает так, что при их добавлении я выбираю «Создать ссылки на папки для любых добавленных папок».

0 голосов
/ 15 апреля 2012

Код должен работать.Ваш файл, скорее всего, не существует.Правильно ли вы использовали заглавные буквы в имени файла при сохранении?Кроме того, сейчас я до сих пор не знаю, как называется файл, поскольку, как уже было сказано, первая строка вашего исходного сообщения не дает правильную строку формата.Перед проверкой попробуйте на наличие, попробуйте:

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

Это должно создать файл по пути, и вы увидите, что fileExists работает.

0 голосов
/ 04 июля 2011

первая неправильная вещь, которую я отмечаю, это первая инструкция.Почему вы передаете data.uid в качестве аргумента в строку формата?Предполагая, что «data.uid» является каким-то целым числом, должно быть не менее «% d» в ...

Я просматривал документацию Apple, в частности, это утверждение который говорит

Каталог, возвращаемый этим методом, может не существовать.

Вы можете попробовать получить текущий путь к каталогу с помощью методов NSFileManager, а затем проверить наличие файла (илисоздайте каталог в месте, которое вы легко сможете найти позже).

А как насчет других путей?Вы написали «ПОЧЕМУ 0?», Я задаю тот же вопрос, что и вы. Попробуйте зацикливаться на элементах массива, каждый раз проверяя существование файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...