Чтение текстового файла с помощью NSString: stringWithContentsOfFile? - PullRequest
12 голосов
/ 13 июля 2011

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

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

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

Я получаю "ноль" в результате. Как мне узнать, какой путь указать?

спасибо

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

Ответы [ 3 ]

13 голосов
/ 13 июля 2011

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

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

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

5 голосов
/ 13 июля 2011

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

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

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

2 голосов
/ 13 июля 2011

Вот общий файл, который я включаю в тонну моих проектов (сначала .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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...