2014-10-02 4 views
0

Я пишу приложение, которое сохраняет текст в файл CSV. Но я не могу найти файл на пути, попробовав его в симуляторе.Xcode не создает файл

Вот код:

#import "protboViewController.h" 

@interface protboViewController() 

@end 

@implementation protboViewController 
@synthesize email; 

- (IBAction)retractKeyboard:(id)sender{ 
    [self resignFirstResponder]; 
} 
- (IBAction)saveInfo:(id)sender { 
    NSString *resultLine=[NSString stringWithFormat:@"%@\n", 
          self.email.text]; 

    NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; 

    NSString *mailLista=[docPath stringByAppendingPathComponent:@"elista.csv"]; 

          if (![[NSFileManager defaultManager] fileExistsAtPath:docPath]) { 
           [[NSFileManager defaultManager] createFileAtPath:mailLista contents:nil attributes:nil]; 
          } 
          NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:mailLista]; 
          [fileHandle seekToEndOfFile]; 
          [fileHandle writeData:[resultLine dataUsingEncoding:NSUTF8StringEncoding]]; 
          [fileHandle closeFile]; 
          [email protected]""; 
          NSLog(@"info saved"); 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

я получаю «информацию сохраненную» приглашение в консоли, но когда я иду в папку «iPhone Simulator» и проверьте, нет файла.

Также, как я могу экспортировать этот файл на свой компьютер с устройства?

Заранее благодарен!

EDIT:

Теперь у меня есть это создать файл и добавив одну строку текста, но если я пытаюсь добавить одну строку текста весь файл заменяется новым файлом с одной строки текста.

#import "protboViewController.h" 

@interface protboViewController() 

@end 

@implementation protboViewController 
@synthesize email; 


- (IBAction)retractKeyboard:(id)sender{ 
    [self resignFirstResponder]; 
} 
- (IBAction)saveInfo:(id)sender { 
    NSString *resultLine=[NSString stringWithFormat:@"%@\n", 
          self.email.text]; 

    NSArray *docPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *docDirectory = [docPath objectAtIndex:0]; 

    NSString *mailLista=[docDirectory stringByAppendingPathComponent:@"elista.csv"]; 

    NSError *csvError = NULL; 

    BOOL written = [resultLine writeToFile:mailLista atomically:YES encoding:NSUTF8StringEncoding error:&csvError]; 

    if (!written) 
     NSLog(@"write failed, error=%@", csvError); 
    else 
     NSLog(@"Saved! File path =", mailLista); 

} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

Я искал ответ, и я нашел то, что сказал: «Так как вы не используете для цикла убедитесь, что и объявить outputString в файле заголовка. Инициализировать его в viewDidLoad и тогда вы будете иметь возможность добавить к нему ».

Как объявить его в моем заголовочном файле и что мне нужно инициализировать в viewDidLoad?

Еще раз спасибо.

ответ

1

Добавьте это в "protboViewController.h"

@property (nonatomic, strong) NSString* mailLista; 

Добавьте это в viewDidLoad:

NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; 
self.mailLista = [docPath stringByAppendingPathComponent:@"elista.csv"]; 
if (![[NSFileManager defaultManager] fileExistsAtPath:docPath]) { 
    [[NSFileManager defaultManager] createFileAtPath:self.mailLista contents:nil attributes:nil]; 
} 

наконец изменить свою saveInfo на что-то вроде этого:

NSString *resultLine=[NSString stringWithFormat:@"%@\n", self.email.text]; 

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:self.mailLista]; 
[fileHandle seekToEndOfFile]; 
[fileHandle writeData:[resultLine dataUsingEncoding:NSUTF8StringEncoding]]; 
[fileHandle closeFile]; 
[email protected]""; 

NSLog(@"Saved! File path =%@", self.mailLista); 

, что это как я это делал ранее в одном из моих собственных приложений

+0

Нет, это неправильное изменение. OP пытается добавить к существующему файлу, если он уже существует. Ваше изменение всегда будет перезаписывать любой существующий файл. – rmaddy

+0

Смотрите мое редактирование на OP – Edalol

+0

@rmaddy, вы правы, я не заметил его намерения. без моего изменения, по крайней мере, напечатал правильный путь? –