Objective-C / Не могу получить доступ (прочитать) файл в папке «Ресурсы» - PullRequest
1 голос
/ 24 апреля 2011

Вероятно, это очень простая проблема, но мне это не удалось. Я скопировал файл "questions_famquiz_easy_110326.txt" в папку ресурсов и теперь хочу получить к нему доступ (прочитать) и открыть его, чтобы увидеть, что я могу его прочитать.

Приведенный ниже код взят из одного из тестов, которые я провел, основываясь на примерах, которые я нашел в Интернете.

Я пытаюсь получить доступ к txt-файлу в папке Resources и не могу это сделать. Я искал решение, много тестировал, но не смог.

Я тестирую со следующим кодом:

NSLog(@"\n \n >>>>>>viewDidLoad<<<<<<<<<");

NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

if(![fileManager fileExistsAtPath:filePath])
{
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/questions_famquiz_easy_110326.txt"]];
    [data writeToFile:filePath atomically:YES];
}

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSLog(@"myString: %@", myString);

NSLog(@"\n \n>>>>>>DONE WITH viewDidLoad<<<<<<<<<");

exit(0);  //====EXIT JUST FOR THE TEST====<<<

Приведенный выше код находится в первом запущенном viewController.

Вывод, который я получаю:

>>>>>>viewDidLoad<<<<<<<<<
2011-04-24 21:53:47.825 FamQuiz_R0_1[542:307] myString: (null)
2011-04-24 21:53:51.044 FamQuiz_R0_1[542:307] 
>>>>>>DONE WITH viewDidLoad<<<<<<<<<

Может ли кто-нибудь хороший помочь мне решить эту проблему?

Обновление:

Вот файл Path:

2011-04-24 22:38:08.562 FamQuiz_R0_1[637:307] filePath: /var/mobile/Applications/7F5FDB03-0D22-46BC-91BC-4D268EB4BBEB/FamQuiz_R0_1.app/questions_famquiz_easy_110326.txt

Вот где я разместил файл: enter image description here

РЕШЕНА ПРОБЛЕМА:

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

Когда я использовал вышеизложенное, оно не работало, когда я использовал нижеприведенное, оно работало и печатало текст.

NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath];

1 Ответ

1 голос
/ 25 апреля 2011

Вы не читаете из папки ресурсов.Вы пытаетесь читать из каталога документов.Так что возвращать ноль имеет смысл, так как файл там не существует.

Измените:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

на:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"questions_famquiz_easy_110326" ofType:@"txt"];

, и он должен работать для вас.

...