EXC_BAD_ACCESS при загрузке NSArray из .plist - PullRequest
0 голосов
/ 15 июля 2010

У меня есть список, написанный из NSMutableArray [NSMutableArray writeToFile]. При попытке загрузить этот же список с помощью следующего кода:

NSArray *testArray = [NSArray arrayWithContentsOfFile:[self pathForDataFile:@"reportingSpeicher.plist"]];
NSLog(@"count = %@",[testArray count]);

Я получаю неправильный доступ к счетчику или любой другой операции, которую я пробую на testArray. НО:

NSLog(@"testArray = %@", testArray);

правильно возвращает:

testArray = (
        {
        benutzername = "t.h";
        datum = "2010-07-15";
        dauerInStunden = 1;
        phasenName = "Projektsteuerung,32";
        projektName = "projekt AG,23";
        soapSpeicher =         {
            PasswortAsMD5 = someMD5sum;
            benutzername = "t.h";
            datum = "2010-07-15";
            dauerInStunden = 1;
            phasenid = 32;
            projektid = 23;
            taetigkeit = whateveryoudid;
        };
        taetigkeit = whateveryoudid;
    } )

Я предполагаю, что либо задействовано базовое управление памятью, либо возвращаемый тип каким-то образом поврежден / не является NSArray Эти три строки должны быть достаточно простыми - я просто не могу заставить их работать. Буду признателен за любую помощь!

Ответы [ 2 ]

0 голосов
/ 15 июля 2010

Ваше утверждение NSLog неверно. Строка формата% @ используется при печати объекта Objective-C, но [testArray count] возвращает обычное значение int, и когда NSLog пытается отправить результат сообщение -description, чтобы распечатать его, это приводит к сбою. Вместо этого вы захотите использовать% d, чтобы распечатать целочисленное значение.

NSLog(@"count = %d",[testArray count]);
0 голосов
/ 15 июля 2010

Вам нужно сначала инициализировать массив.Используйте NSArray *testArray = [[NSArray alloc] initWithContentsOfFile:[self pathForDataFile:@"reportingSpeicher.plist"]];.

...