2012-03-30 4 views
0

хотел бы сохранить личную информацию пользователей (имя, номер телефона и т. Д.) В файл, используя: NSKeyedArchiver для последующего использования.Пытается сохранить данные пользователя в файл через NSKeyedArchiver - NSInvalidArgumentException - это то, что я получаю, когда я нажимаю на сохранение

Получение следующее сообщение об ошибке, когда я нажимаю на SaveButton:

2012-03-30 14: 01: 11.483 archive2 [41840: F803] * Согласующий приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: «* - [__ NSArrayM insertObject: atIndex]: объект не может быть нулевым» * Первый стек бросить вызов: (0x13c8022 0x1559cd6 0x13b533e 0x13b61f0 0x2917 0x13c9e99 0x1514e 0x150e6 0xbbade 0xbbfa7 0xbb266 0x3a3c0 0x3a5e6 0x20dc4 0x14634 0x12b2ef5 0x139c195 0x1300ff2 0x12ff8da 0x12fed84 0x12fec9b 0x12b17d8 0x12b188a 0x12626 0x1f9d 0x1f05) завершение вызова метания исключение (lldb)

ч Файл:

@property (nonatomic, strong) IBOutlet UITextField *vorname; 
@property (nonatomic, strong) IBOutlet UITextField *nachname; 
@property (nonatomic, strong) IBOutlet UITextField *ausweisNR; 
@property (nonatomic, strong) IBOutlet UITextField *serviceNR; 
@property (nonatomic, strong) IBOutlet UITextField *telephoneNumber; 
@property (nonatomic, strong) NSString *dataFilePath; 

-(IBAction)saveData:(id)sender; 

м файл:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSFileManager *filemgr; 
    NSString *docsDir; 
    NSArray *dirPaths; 

    filemgr = [NSFileManager defaultManager]; 

    //Get the documents directory: 
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    docsDir = [dirPaths objectAtIndex:0]; 

    // Build the path to the data file: 
    dataFilePath = [[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@"data.archive"]]; 

    // Check if the file already exist: 
    if ([filemgr fileExistsAtPath:dataFilePath]) // File exist so rebuild... 
    { 
     NSMutableArray *userCredentials; 
     userCredentials = [NSKeyedUnarchiver unarchiveObjectWithFile:dataFilePath]; 

     self.serviceNR.text = [userCredentials objectAtIndex:0]; 
     self.ausweisNR.text = [userCredentials objectAtIndex:1]; 
     self.vorname.text = [userCredentials objectAtIndex:2]; 
     self.nachname.text = [userCredentials objectAtIndex:3]; 
     self.telephoneNumber.text = [userCredentials objectAtIndex:4]; 
    } 
} 



-(IBAction)saveData:(id)sender 
{ 
    NSMutableArray *userCredentials = [[NSMutableArray alloc]init]; 

    [userCredentials addObject:self.serviceNR.text]; 
    [userCredentials addObject:self.ausweisNR.text]; 
    [userCredentials addObject:self.vorname.text]; 
    [userCredentials addObject:self.nachname.text]; 
    [userCredentials addObject:self.telephoneNumber.text]; 
    [NSKeyedArchiver archiveRootObject:userCredentials toFile:dataFilePath]; 
} 
+2

Марк: вы пытаетесь вставить ноль значение в изменяемый массив. попробуйте выполнить проверку перед добавлением данных в массив. –

+0

Работает с проверкой сначала. Благодарим за помощь. –

ответ

1

Один из текстовых полей пусто. Сначала вы должны проверить их.

if([self.serviceNR.text length]){ 
    [userCredentials addObject:self.serviceNR.text]; 
} 

и так далее ....

+0

Работает с проверкой сначала. Благодарим за помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^