#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);
}
Кроме того, проверьте, находится ли он в вашем каталоге 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 правильно, приведенный выше код является всего лишь примером, и его необходимо будет изменить, чтобы он соответствовал вашему проекту, и следовать надлежащим рекомендациям перед использованием в производственной среде.