NSMutableArray връща Null от plist

Имам NSMutableArray, който съдържа списък с числа, взети от текстово поле.

Опитвам се да използвам докосването на бутона за готово, за да подтикна запазването на 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)done { 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, който не получава необходимите данни.

Опитах се да премина през средата за изпълнение с дебъгера, но наистина не знам как да го използвам правилно.

Всяка помощ би била страхотна! Благодаря хора.


person Jonnybellman    schedule 31.05.2012    source източник


Отговори (1)


Вие предекларирате масива в метода -(void) readPlist:

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

Този ред трябва да бъде:

weightsArray = [[NSMutableArray alloc] initWithContentsOfFile:filePath]; 
person Butaca    schedule 31.05.2012
comment
Добър човек! Това го оправи. Толкова проста грешка също. Сега мога да продължа напред и да намеря друг проблем, хаха. - person Jonnybellman; 31.05.2012