2012-05-31 1 views
0

У меня есть NSMutableArray, который содержит список чисел, взятых из текстового поля.NSMutableArray возвращает Null из plist

Я пытаюсь использовать нажатие сделанной кнопки, чтобы инициировать сохранение NSMutableArray в plist внутри NSuserdomain. Чтобы проверить содержимое plist, я пытаюсь перезагрузить их в другой NSMUtableArray, а затем распечатать массив.

-(NSString *) dataFilePath 
{ NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory = [path objectAtIndex:0]; return  [documentDirectory stringByAppendingPathComponent:@"WeightsList.plist"]; 
} 

- (void)writePlist 
{ 
    [weightsArray writeToFile:[self dataFilePath] atomically:YES]; 
} 

-(void)readPlist 
{ 
    NSString *filePath = [self dataFilePath]; 
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) 
    { 
     NSMutableArray *weightsArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath]; 
    NSLog(@"%@\n",weightsArray); 
    NSLog(@"%@\n", filePath); 
    } 
} 

"Сделано" действие ниже, что называется, когда делается нажата кнопка:

- (IBAction) сделал { Int arrayCount;

id arrayVariable; 

arrayCount = [weightsArray count]; 
[weightsArray addObject:weightInput.text]; 
arrayVariable = [weightsArray objectAtIndex:arrayCount]; 
NSLog(@"Weight Entered: %@", arrayVariable); 
NSLog(@"%@",weightsArray); 
[self writePlist]; 
[self readPlist]; 

[self dismissViewControllerAnimated:YES completion:nil]; 

} 

Мой вопрос, является то, что выход каждый раз:

2012-05-31 18:35:05.378 WeighMe[780:f803] /Users/jb/Library/Application Support/iPhone  Simulator/5.1/Applications/BE9D2906-50FA-4850-B3A5-47B454601F61/Documents/WeightsList.plist 
2012-05-31 18:35:05.829 WeighMe[780:f803] Weight Entered: (null) 
2012-05-31 18:35:05.830 WeighMe[780:f803] (null) 
2012-05-31 18:35:05.831 WeighMe[780:f803] (
32432 
) 

Является ли это проблемой с PLIST не работает правильно, или это NSMutableArray, который не получает необходимые данные.

Я попытался пройти через среду выполнения с помощью отладчика, но я не знаю, как правильно его использовать.

Любая помощь была бы замечательной! Спасибо, ребята.

ответ

1

Вы повторное объявление массива в - (Недействительном) методе readPlist:

NSMutableArray *weightsArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath]; 

Эта линия должна быть:

weightsArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath]; 
+0

Хорошего человеку! Это исправило это удовольствие. Такая простая ошибка тоже. Теперь я могу двигаться дальше и искать другую проблему. – Jonnybellman

+1

Рад помочь! :) – Butaca