Получение содержимого файла в Xcode

#objective-c #xcode #file #io

#objective-c #xcode #файл #io

Вопрос:

В моем проекте у меня есть обычный текстовый файл с именем GAME.js , и я пытаюсь получить содержимое файла.

 [NSString stringWithContentsOfFile:@"GAME.js" encoding:NSUTF8StringEncoding error:nil];
 

похоже, это должно сработать, но это просто возвращает пустую строку.

Пожалуйста, помогите мне это исправить.

Ответ №1:

Поместите GAME.js в Resources папку в вашем проекте Xcode и используйте следующий код, чтобы получить содержимое файла.

 NSError *error = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"GAME" ofType:@"js"];
NSString* gameFileContents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:amp;error];
 

Ответ №2:

Если вы передадите a NSError , он точно скажет вам, в чем проблема:

 NSError *error = nil;
NSString *myString = [NSString stringWithContentsOfFile:@"GAME.js" encoding:NSUTF8StringEncoding error:amp;error];

if (error) {
    NSLog(@"%@", [error localizedDescription]);
} else {
    NSLog(@"%@", myString);
}
 

NSError Документация


Кроме того, проверьте, находится ли он в вашем каталоге documents, к которому можно получить доступ с помощью NSSearchPathForDirectoriesInDomains :

 NSError *error = nil;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fullPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"GAME.js"];

NSString *myString = [NSString stringWithContentsOfFile:fullPath encoding:NSUTF8StringEncoding error:amp;error];

if (error) {
    NSLog(@"%@ - %@", [error localizedDescription], [error localizedFailureReason]);
} else {
    NSLog(@"%@", myString);
}
 

Комментарии:

1. Не удалось завершить операцию o_O. (Ошибка Cocoa 260.) — (null)

2. Извините, я неправильно истолковал этот комментарий как ошибку в коде, который я вам дал, а не вашу фактическую ошибку… Мне пришлось бы поискать в Google этот код ошибки (260), но посмотрите на ответ @ChrisLedet, это, вероятно, сработает. Если его ответ не сработает, попробуйте то, что я добавил в своем последнем редактировании ответа.

3. Обратите внимание, что в Cocoa (Touch) следует проверять возвращаемое значение метода перед проверкой выходного параметра ошибки .

4. @Bavarious правильно, приведенный выше код является всего лишь примером, и его необходимо будет изменить, чтобы он соответствовал вашему проекту, и следовать надлежащим рекомендациям перед использованием в производственной среде.