从.plist加载NSArray时的EXC_BAD_ACCESS

时间:2010-07-15 08:13:51

标签: objective-c nsmutablearray nsarray plist exc-bad-access

我有一个由[NSMutableArray writeToFile]从NSMutableArray编写的plist。尝试使用以下代码加载同一个plist时:

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 :(得分:0)

您需要先初始化数组。使用NSArray *testArray = [[NSArray alloc] initWithContentsOfFile:[self pathForDataFile:@"reportingSpeicher.plist"]];

答案 1 :(得分:0)

您的NSLog语句不正确。打印出Objective-C对象时使用%@格式字符串,但[testArray count]返回一个普通的int,当NSLog尝试发送一条-description消息打印出来时,这会导致崩溃。您将需要使用%d来打印整数值。

NSLog(@"count = %d",[testArray count]);