-1

我有一个看起来像这样的自定义 plist 文件:

自定义 plist 文件

我知道数据在那里(我使用 NSLog 显示它)。我的问题是我遇到了运行时错误:在使用以下代码初始化 *hexColors 后读取第一行时对象不能为 nil :

NSString *pListPath = [[NSBundle mainBundle] pathForResource:@"ColorSchemes" ofType:@"plist"];

// Load the file content and read the data into the array
NSDictionary *colorsDict = [[NSDictionary alloc] initWithContentsOfFile:pListPath];
//  NSLog(@"\ncolorsDict: %@", colorsDict);

NSMutableArray *hexColors = [[NSMutableArray alloc]init];
[hexColors addObject:[colorsDict objectForKey:@"buttons"]];
[hexColors addObject:[colorsDict objectForKey:@"calendar"]];
[hexColors addObject:[colorsDict objectForKey:@"leftGrid"]];
[hexColors addObject:[colorsDict objectForKey:@"topGrid"]];
[hexColors addObject:[colorsDict objectForKey:@"dataGrid"]];

我不明白 addObject 代码有什么问题(它曾经可以工作,没有进行任何更改)。有人可以帮我解决这个问题吗?

4

1 回答 1

1

如果我没记错的话colorsDict是根字典。它的键是Spring, Autumn, etc.. 键button, calendar, leftGrid是您可以通过季节键访问的字典的一部分。

你需要做(例如)

NSDictionary *realColorsDict = [colorsDict objectForKey:@"Spring"];
[hexColors addObject:[realColorsDict objectForKey:@"buttons"]];
[hexColors addObject:[realColorsDict objectForKey:@"calendar"]];
[hexColors addObject:[realColorsDict objectForKey:@"leftGrid"]];
[hexColors addObject:[realColorsDict objectForKey:@"topGrid"]];
[hexColors addObject:[realColorsDict objectForKey:@"dataGrid"]];

让我知道这是否解决了您的问题:)

于 2013-09-25T16:02:08.523 回答