2010-10-17 118 views
6

我有我的iPhone應用程序中的plist,我想讀取和寫入從我的單一整數,並形成它。寫/閱讀plist文件iPhone

我有這個來閱讀:

scoreData *score = [scoreData sharedData]; 

filePath = @"stats.plist"; 
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

score.highScore = [plistDict objectForKey:@"score"]; 

然後寫它:

scoreData *score = [scoreData sharedData]; 

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

[plistDict setValue:score.highScore forKey:@"score"]; 
[plistDict writeToFile:filePath atomically: YES]; 

我得到兩個部分的錯誤:

轉換無效形式objc_object *到int

and

無效的轉換表格int到objc_object

我非常感謝任何幫助,謝謝。

回答

7

兩件事情:

  1. 當你在字典中設置一個鍵,you're probably aftersetObject:forKey:而不是setValue:forKey:

  2. 字典包含對象(類型idNSString*或您自己的Obj-C對象),而不是基元類型(int,BOOL等)。

當你想存儲的對象 - 收集基本類型,你可以「包裝」它的對象是這樣的:

[plistDict setObject:[NSNumber numberWithInt:score.highScore] forKey:@"score"]; 

而且拿回來這樣的:

score.highScore = [[pListDict objectForKey:@"score"] intValue]; 
+0

建立沒有錯誤nw這是偉大的!但是我改變score.highScore,然後完全退出應用程序,重新啓動並將其重置爲零,它永遠不會返回值。希望得到幫助,謝謝。 – 2010-10-17 16:34:59

+0

有趣的發現。我認爲我使用它的代碼寫入plist並閱讀它,但實際上並沒有保存它,因爲我下次使用該應用程序。可能?我怎樣才能解決這個問題? – 2010-10-17 17:09:24

+0

可能不起作用,因爲您正在嘗試將字典寫入應用程序包內的.plist文件,該文件夾是隻讀的。你應該檢查'[plistDict writeToFile:filePath atomically:YES]的返回值;'' (YES =成功,NO =寫入失敗)。 嘗試將文件寫入App Bundle文檔文件夾中的路徑,該文件夾是可讀寫的。您可以使用獲得的文件路徑:NSArray的* arrayPaths = \t \t NSSearchPathForDirectoriesInDomains( \t \t \t NSDocumentDirectory, \t \t \t NSUserDomainMask, \t \t \t YES); \t NSString * docDir = [arrayPaths objectAtIndex:0]; – 2011-06-09 10:05:54