2012-01-03 35 views
0

我有一個plist與多個鍵。每個鍵的值都是「N」或「Y」。如何將一個plist中的鍵的所有值立即更改爲一個特定的值?

我沒有一個接一個的問題,並改變了值。但是有沒有辦法將plist中的按鍵的每個值都改爲一個值?這真的會縮短我的代碼。

當前代碼更改爲一個關鍵的plist中像這樣的值:

NSString *newValue; 
newValue = @"Y"; 

[manufacturerDictionary setObject:[NSString stringWithString:newValue] 
          forKey:manufacturerName]; 
[manufacturerDictionary writeToFile: path atomically:YES]; 
[manufacturerDictionary release]; 
+0

你能展示一點當前的代碼嗎?這是iOS還是OS X? – Anna 2012-01-03 17:58:30

+0

我將編輯我的問題以顯示當前的代碼。 – MeisterPlans 2012-01-03 17:59:49

回答

1

基於您的代碼,我假設你的plist包含單個存檔的NSDictionary作爲根對象。這個怎麼樣:

NSString *newValue = @"Y"; 
NSArray *allKeys = [manufacturerDictionary allKeys]; 
for (NSString *key in allKeys) 
{ 
    [manufacturerDictionary setObject:newValue forKey:key]; 
} 
[manufacturerDictionary writeToFile:path atomically:YES]; 
[manufacturerDictionary release]; 

for (NSString *key in allKeys)使用快速枚舉枚舉存在字典中的每個鍵。

+0

嗨安德魯!我嘗試了你的解決方案,看起來它會工作給我,但得到了以下令人討厭的小錯誤:2012-01-03 13:37:12.668 PTD [6821:12203] ***終止應用程序由於未捕獲異常'NSGenericException ',原因:'*** Collection <__ NSCFDictionary:0x7895980>在枚舉時發生了變化。' – MeisterPlans 2012-01-03 18:38:57

+0

這就是我得到的快速在文本編輯器中寫東西而不進行測試!問題是(是)在枚舉其內容時無法更改可變對象的內容。解決方法是首先將所有密鑰拉出到單獨的數組中,然後枚舉該數組。 – 2012-01-03 18:40:37

+0

好的,我看到你改變了答案代碼。我會再試一次。 – MeisterPlans 2012-01-03 18:52:21

相關問題