Использование fopen () в Objective-C - PullRequest
7 голосов
/ 18 ноября 2011

Я озадачен сбоем, который я продолжаю получать из-за ошибки в этом разделе кода:

                FILE *fid200;
                fid200 = fopen ( "Length200Vector.txt" , "w" );
                if (fid200 == NULL)
                    perror("Error opening Length200Vector.txt");
                for (int n = 0; n<200; n++) {
                    if (n == 0) {
                        fprintf (fid200, "%f", self.avgFeatureVect[0][n]);
                    }
                    else {
                    fprintf (fid200, ", %f", self.avgFeatureVect[0][n]);
                    }
                }
                fprintf (fid200, "\n");
                fclose(fid200);

Ошибка: Ошибка открытия. Length200Vector.txt: Операция не разрешена.

Файл находится в моей папке Resources для моего проекта, и эта строка выполняется в файле .mm. В рамках того же проекта в файлах .cpp я использую практически тот же самый точный код, который работает без проблем. Не могу понять это ...

Спасибо

1 Ответ

12 голосов
/ 19 ноября 2011

Что касается вашего комментария о том, что это приложение для iOS: вам не разрешено (с точки зрения песочницы iOS) выполнять изменение ("w" в fopen ()) доступа к чему-либо в приложениях iOSкроме файлов, расположенных в каталоге «Documents» ваших приложений (или для общих ресурсов приложения в каталоге ~ / Library / Application Support / «идентификатор пакета»), а для временных файлов - в каталоге, возвращаемом вызовом функции NSTeoraryDirectory () [1]).

Получите доступ к каталогу «Documents» примерно так:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docs_dir = [paths objectAtIndex:0];

Если у вас уже есть файл ресурсов, который вам нужно будет изменить во время выполнения вашего приложения, у вас будетсначала скопируйте его в каталог «Документы», а затем измените его.

[1] http://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/AccessingFilesandDirectories/AccessingFilesandDirectories.html#//apple_ref/doc/uid/TP40010672-CH3-SW1

...