2013-06-28 38 views
1

我想編輯數組字典中的特定值(在key:thumbnailImage下)。例如,我想將thepark.png改爲theplace.png。我如何在目標C中做這件事?我也製作了一個plist的副本,以從appbundle的文檔文件夾。在ios平臺的數組字典中編輯Plist值

下面是我的plist的樣本:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>location</key> 
    <array> 
     <string>The Park</string> 
     <string>The Coffee Place</string> 
     <string>The Center Fountain</string> 
    </array> 
    <key>timestamp</key> 
    <array> 
     <string>Not found yet</string> 
     <string>Not found yet</string> 
    </array> 
    <key>thumbnailImage</key> 
    <array> 
     <string>thepark.png</string> 
     <string>thecoffeeplace.png</string> 
     <string>thecetnerfountain.png</string> 
    </array> 
</dict> 
</plist> 
+0

大概在info.plist中寫入不是好主意,它不起作用,因爲您正試圖將字典寫入應用程序包中的.plist文件,該文件夾是隻讀的。因此,它不會工作,也會有更多的拒絕機會。 – Smita

+0

我編輯了我的問題,實際上我已將一個副本發送到文檔文件夾。 – user2531679

+1

http://stackoverflow.com/questions/1680367/changing-data-in-a-plist –

回答

3

你需要讀出plist作爲可變詞典編輯數據並回寫。

NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 

NSMutableArray *images = [dictionary[@"thumbnailImage"] mutableCopy]; 

//Apply your logic on how to change the value 
NSString *newImage = @"theplace.png"; 
[images replaceObjectAtIndex:0 withObject:newImage]; 

dictionary[@"thumbnailImage"] = images; 

[dictionary writeToFile:filePath atomically:YES]; 
+0

非常感謝!這已經解決了我一直面臨的問題! – user2531679

0

我不認爲你可以編輯您的應用程序的資源文件的內容,所以你可能希望將其保存到文檔文件夾編輯後...

+0

我已經複製plist到文檔文件夾。然而我堅持編輯特定的數組索引值並將其保存 – user2531679

+0

//對於數組 BOOL result = [myArray writeToFile:filename atomically:YES]; // for a dictionary BOOL result = [myDict writeToFile:filename atomically:YES]; –