2010-02-08 101 views
0

我遇到了问题。每次我开始我的应用程序崩溃。这是我的代码。 调试器说:[list count]崩溃的应用程序。我不知道。 NSLog(@"%@", self.list);给我按预期的一个项目...为什么NSMutableArray Count会崩溃我的应用程序?

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
    data = [[NSData alloc] initWithContentsOfFile:filePath]; 
    unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 

    NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"]; 
    [unarchiver finishDecoding]; 
    [unarchiver release]; 
    [data release]; 

}

self.list = array; 
    NSLog(@"%@", self.list); 
    NSLog(@"count %i", [list count]); 

被打开了一样,创建存档:

Adding *adding = [[Adding alloc] init]; 
adding.nummer = 1; 
adding.stadt = stadt.text; 


NSMutableData *data = [[NSMutableData alloc] init]; 
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] 
          initForWritingWithMutableData:data]; 
[archiver encodeObject:adding forKey:@"TOWN"]; 
[archiver finishEncoding]; 
[data writeToFile:[self dataFilePath] atomically:YES]; 

如果您需要任何futher代码让我知道。我将是任何帮助:)

+0

如何宣布伊娃清单? – 2010-02-08 16:58:32

+0

确实[self.list count]崩溃(是和list.list.name一样吗?) – Mark 2010-02-08 17:05:28

+0

是的。一样的。两者都崩溃了...... – rdesign 2010-02-08 17:06:23

回答

1

非常心存感激。我认为,问题是,你在这里编码添加类:

[archiver encodeObject:adding forKey:@"TOWN"]; 

这不是一个NSMutableArray然而,当你在你的解码正试图获得它回作为一个NSMutableArray在这里:

NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"]; 

而我猜你的课加入不是一个数组。

+0

你的权利,如果我解码它作为一类添加它的作品。但如书中所述,将其分配给nsmutablearray。 http://apress.com/book/downloadfile/4476(如果你想你可以看看例子09)在PresidentsViewController.m – rdesign 2010-02-08 17:29:24

+0

我刚看了一下示例,你可以在那里做,因为@“总统”是一个pList文件。 – 2010-02-08 17:43:26

+0

感谢您的帮助! 是的,但它的存档。我创建的那个也是一样的。 我刚刚发现了一些东西。他们创建的存档具有与NSMutableArray相同的最后一项定义。我得到了添加的def。怎么可能改变它? 编辑:项目138显示类... – rdesign 2010-02-08 17:46:58

相关问题