WriteData вызывает ошибку sigabrt - PullRequest
0 голосов
/ 20 марта 2012

Я хочу прочитать файл (hello.in) и записать его в другой файл построчно.Я пишу метод ниже, и когда я запускаю его, я получаю ошибку sigabrt.Я хотел бы получить ответ.

-(void) saveAsLineLine: (NSString*) fileName
{
    NSString *filePath;
    filePath = [NSString stringWithFormat:@"%@%@", pathdir, @"hello.in"];

    // reading the file
    NSString *entireFileInString = [NSString stringWithContentsOfFile:filePath encoding:(NSUTF8StringEncoding) error:nil];
    // each line, adjust character for line endings
    NSArray *lines = [entireFileInString componentsSeparatedByString:@"\n"];  

   filePath = [NSString stringWithFormat:@"%@%@", pathdir, fileName];
    // create a file
    [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
    // open the file for writeing
    NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:filePath];

    // write line by line
    for (NSData *line in lines)
    {
        NSLog (@"line: %@\n", line);
        [fh seekToEndOfFile];
        [fh writeData: line];                     // THE BUG IS HERE !!!!!!!!

//        @try {
//            [fh writeData: line];
//            
//        }
//        @catch (NSException *exception) {
//            NSLog(@"%@",[exception description]);
//        }  

    }

    [fh closeFile];

}

1 Ответ

1 голос
/ 20 марта 2012

NSArray lines содержит экземпляры NSString, а не NSData, верно?

Если вы хотите записать данные в файл ...

[lines enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSData *lineData = [obj dataUsingEncoding:NSUTF8StringEncoding];
    [fh seekToEndOfFile];
    [fh writeData:lineData];
}];
...