NSMutableArray Проблема - iPhone - PullRequest
0 голосов
/ 24 мая 2010

Я пытаюсь получить UITableView для чтения его данных из файла.Я попытался сделать это следующим образом:

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

NSString *fullFileName = [NSString stringWithFormat:@"%@/entries.plist", documentsDirectory];

self.dataForTable = [[NSMutableArray alloc] initWithContentsOfFile:fullFileName];

Это скомпилируется нормально, но при сохранении чего-либо в файл в следующем фрагменте файл не сохраняется, и ничего не записывается в массив:

NSMutableDictionary*userDictionary;
userDictionary = [[NSMutableDictionary alloc] init];
[userDictionary setObject:name.text forKey:@"name"];
[userDictionary setObject:email.text forKey:@"email"];
[userDictionary setObject:serial.text forKey:@"serial"];
[userDictionary setObject:notes.text forKey:@"notes"];
[userDictionary setObject:[NSNumber numberWithInt:[licenseType selectedRowInComponent:0]] forKey:@"license_type"];
[userDictionary setObject:[date date] forKey:@"date"];
[userDictionary setObject:[NSNumber numberWithBool:[paymentSwitch isOn]] forKey:@"payment"];

NSString*dirToSaveTo = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

NSString*fileName = [NSString stringWithFormat:@"%@.plist",name.text];

NSString*saveName = [dirToSaveTo stringByAppendingPathComponent:fileName];

[userDictionary writeToFile:saveName atomically:NO];

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

NSString *fullFileName = [NSString stringWithFormat:@"%@/entries.plist", documentsDirectory];

[self.dataForTable addObject:name.text];

NSLog(@"%@",self.dataForTable);

[self.dataForTable writeToFile:fullFileName atomically:YES];

NSLog просто возвращает (ноль).Файл * plist никогда не пишется.Что я делаю не так?

1 Ответ

2 голосов
/ 24 мая 2010

Почти наверняка эта строка не работает, и вы не проверяете, вернула ли она nil:

self.dataForTable = [[NSMutableArray alloc] initWithContentsOfFile:fullFileName];

Как только он возвращает ноль, каждый второй вызов ничего не делает. Наиболее вероятные проблемы состоят в том, что созданный вами путь к файлу неверен и не указывает на файл, или файл не является правильным списком.

...