Подтвердить что ты не робот

Чтение текстового файла с помощью NSString: stringWithContentsOfFile?

Чтение текстового файла с помощью NSString: stringWithContentsOfFile?

NSString *txtFilePath = [[NSBundle mainBundle] pathForResource:@"\help" ofType:@"txt"];
NSString *txtFileContents = [NSString stringWithContentsOfFile:txtFilePath encoding:NSUTF8StringEncoding error:NULL];

NSLog(@"File:  %@",txtFileContents);

В результате получается "null". Как узнать, какой путь указать?

спасибо

(Я поместил файл под "Группы и файлы"... поэтому не уверен, нужно ли мне указывать путь или просто имя файла. Может быть, что-то еще не так???

4b9b3361

Ответ 1

Я думаю, что обратная косая черта на вашем пути путает вещи. Попробуйте следующее:

NSString *txtFilePath = [[NSBundle mainBundle] pathForResource:@"/help" ofType:@"txt"];

Кроме того, как отмечено в комментариях, вам нужно использовать этап сборки вашего проекта для копирования файла "help.txt".

Ответ 2

Попробуйте это. То, что вы хотите, это путь к help.txt, но вы должны разделить его на свое имя и расширение для работы метода.

NSString *txtFilePath = [[NSBundle mainBundle] pathForResource: @"help" ofType: @"txt"];

Также не помешало бы указать NULL вместо nil для аргумента ошибки. Это связано с тем, что nil представляет объекты, тогда как NULL представляет указатели.

Ответ 3

Вот общий файл, который я включаю в тонну моих проектов (сначала сначала с помощью .h), а затем .m):

Я называю это FileHelpers.h:

#import <UIKit/UIKit.h>

NSString *pathInDocumentDirectory(NSString *fileName);

Я называю это (конечно) FileHelpers.m:

#include "FileHelpers.h"

NSString *pathInDocumentDirectory(NSString *fileName)
{
    // Get list of document directories in sandbox
    NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    // Get one and only one document directory from that list
    NSString *documentDirectory = [documentDirectories objectAtIndex:0];

    // Append passed in file name to that directory, return it
    return [documentDirectory stringByAppendingPathComponent:fileName];

} // pathInDocumentDirectory

В стороне, я должен признать, что я сам не придумал это решение, но это было так долго, что я использовал его, что я не могу вспомнить сейчас, где я его получил. Если кто-то знает, не стесняйтесь приписывать соответствующий кредит!