путь contentOfFile дает ноль - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь получить весь текст из txt-файла в строку, но если я пытаюсь выполнить NSlog () эту строку, я получаю ноль. Я думаю, что это из-за пути, по которому я пытаюсь получить файл, но я не могу понять, что не так с этим путем. Я знаю, что я получаю правильный navigationItem.title, так что это не проблема. Текстовый файл находится в главном комплекте в подпапке с именем Øvelser / Text / "nameOfExercise" .txt. Я вставил свой код ниже:

- (void)viewDidLoad
{
[super viewDidLoad];

//Read from the exercise document
NSString *path = [[@"Øvelser/Text/" stringByAppendingString:self.navigationItem.title] stringByAppendingString:@".txt"];

if(path)
{

    _exerciseDocument = [NSString stringWithContentsOfFile:path encoding: NSUTF8StringEncoding error:nil];
    NSLog(@"%@", _exerciseDocument);
}
else 
{
    NSLog(@"error");
}
}

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Вам нужно использовать NSBundle методы, чтобы получить пути относительно пакета.Этот вопрос похож и дает способ создания пути:

NSBundle *thisBundle = [NSBundle bundleForClass:[self class]];
NSString *filePath = nil;

if (filePath = [thisBundle pathForResource:@"Data" ofType:@"txt" inDirectory:@"Folder1"])  {

    theContents = [[NSString alloc] initWithContentsOfFile:filePath];

    // when completed, it is the developer's responsibility to release theContents
0 голосов
/ 02 апреля 2012

Вы получаете ноль обратно, потому что что-то идет не так, читая файл.Если вы передадите указатель на объект ошибки, он будет заполнен сведениями об ошибках, которые сообщат вам, что происходит, если вы зарегистрируете его.Не игнорируйте информацию об ошибках.

NSError* error = nil;
 _exerciseDocument = [NSString stringWithContentsOfFile: path 
                                               encoding: NSUTF8StringEncoding  
                                                  error: &error];
if (_exerciseDocument == nil)
{
     NSLog(@"Error: %@", error);
}
else
{
     // success
} 

В NSString есть много прекрасных методов для манипулирования путями, и вы должны их использовать.В частности, создайте свои пути, используя stringByAppendingPAthComponents и stringByAppendingPathExtension .

...