2013-09-25 80 views
-1

我有一個自定義的plist文件看起來像這樣:閱讀習慣的plist導致崩潰

custom plist file

我知道數據是存在的(我顯示它使用NSLog的)。我的問題是我得到一個運行時錯誤:

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代碼(:讀操作時的第一線初始化後* hexColors與此代碼對象不能是零它曾經工作,沒有改變)。有人可以幫我解決這個問題嗎?

+1

變化必須已經完成。你發佈的代碼沒有辦法與發佈的plist一起工作。無論是修改plist的結構還是修改代碼。很有可能你把第二級別的詞典添加到了plist中。 – rmaddy

回答

1

如果我沒有弄錯​​是根詞典。其鑰匙是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"]]; 

讓我知道如果這能解決你的問題:)

+0

我看到你在說什麼......我需要對代碼進行一些更改......我會回到你身邊...... – SpokaneDude

+0

問題是單身人士在AppDelegate中沒有正確設置......固定現在它工作...感謝您的幫助;我很感激。 SD – SpokaneDude