2015-07-15 3 views
3

Я пишу приложение регистрации, которое должно сохранить CSV-файл в папке каталога документов. Я хотел бы посмотреть на результат и посмотреть, что произойдет, когда я открою файл CSV в excel. Я перемещаться в папку каталога документов, выяснив, где она должна быть сохранена этот фрагмент кода:Сохранение файла CSV в папке каталога документов

NSLog(@"Info Saved"); 
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] 
            URLsForDirectory:NSDocumentDirectory 
            inDomains:NSUserDomainMask] lastObject]); 

Вот мой код для сохранения информации поместить в 11 текстовых полей в форме регистрации:

- (IBAction)saveFormButton:(id)sender { 

// saves text field data in comma separated CSV file format 
NSString *formData = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@,%@,%@,%@,%@,%@\n", 
         self.nameTextfield.text, self.emailTextfield.text, 
         self.phoneTextfield.text, self.termTextfield.text, 
         self.schoolTextfield.text, self.graduationTextfield.text, 
         self.gpaTextfield.text, self.degreeTextfield.text, 
         self.interestTextfield.text, self.groupTextfield.text, 
         self.appliedTextfield.text]; 

// get document directory path 
NSString *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, YES)objectAtIndex:0]; 

// append results.csv onto doc path 
NSString *event = [documentDirectoryPath stringByAppendingString:@"results.csv"]; 

// creates folder if it does not exist 
if (![[NSFileManager defaultManager] fileExistsAtPath:documentDirectoryPath]) { 
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil]; 
} 


NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:event]; 
[fileHandle seekToEndOfFile]; 
[fileHandle writeData:[formData dataUsingEncoding:NSUTF8StringEncoding]]; 
[fileHandle closeFile]; 

Должен ли я видеть файл в этой конкретной папке, к которой я перешел?

Спасибо за вашу помощь,

+0

Я забыл упомянуть, что я очень новая разработка iOS –

ответ

2

Здесь есть более элегантный способ с меньшим количеством кода

// Content of file 
NSString* str= @"str,hey,so,good"; 

// Writing  
NSString *root = [NSHomeDirectory() stringByAppendingPathComponent:@"file.csv"]; 
[str writeToFile:root atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

// Reading 
NSString *string = [[NSString alloc] initWithContentsOfFile:root encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"%@",string); 

Результат:

2015-07-15 15:52:56.267 ObjC[2927:15828] str,hey,so,good 
3

Изменить эту строку:

NSString *event = [documentDirectoryPath stringByAppendingString:@"results.csv"]; 

к:

NSString *event = [documentDirectoryPath stringByAppendingPathComponent:@"results.csv"]; 

Это гарантирует, что путь в правильном формате. Кроме того, вы, похоже, проверяете, существует ли «documentDirectoryPath» до создания файла, а не самого имени файла. Изменение:

if (![[NSFileManager defaultManager] fileExistsAtPath:documentDirectoryPath]) { 
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil]; 
} 

к:

if (![[NSFileManager defaultManager] fileExistsAtPath:event]) { 
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil]; 
} 
Смежные вопросы