Вопрос по ios, objective-c, c – Fopen проблема в iOS

7

По какой-то причине fopen выдает ошибкуNo such file or directory хотя я преобразовал путь к пути документов.

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docsPath stringByAppendingPathComponent:filename];

Я передаю NSString, используяUTF8String метод и открыть только в режиме чтения с

if ((fh=fopen(filename, "r+b")) == NULL){
    perror("fopen");
    return -1;
}

Следующий полный путь распечатывается при попытке открыть имя файла (я удалил точные значения для реального имени каталога приложения)

/var/mobile/Applications/#####/Documents/testImages.pak

Почему бы fopen не обнаружить файл? Я добавил его к цели и даже попытался изменить настройки местоположения в инспекторе файлов наRelative to Group а такжеRelative to Project

Файл действительно существует в каталоге документов? Как это туда добраться? Sven
Я не знаю точно, что вы пытаетесь достичь, но я бы предложил использовать нативный NSFileManager и NSFileHandle, они должны быть хороши практически для всего, что делает fopen. Stavash
@ Helium3 Используйте стандартную процедуру для копируемых копий: если файл не существует в doc-dir, скопируйте его туда из resource-dir. Там вы можете написать в файл. ott--
Переменная имени файла находится внутри самого C API. Код obj c находится в оболочке. Я передаю filePath с UTF8String в функцию c, ожидающую символ * jarryd
Как насчет открытия filePath вместо имени файла? ott--

Ваш Ответ

1   ответ
10

используя следующий метод, иначе он не будет правильно отображен в файловую систему.

    char const *path_cstr = [[NSFileManager defaultManager] fileSystemRepresentationWithPath:pathString];

Теперь вы можете использовать его непосредственно в fopen ().

Спасибо чувак. Я почесал голову в течение 1 дня, почему это не работает на iOS 10, и этот ответ помог.

Похожие вопросы