我試圖使用不允許空值的NSDictionaries的NSArray
的writeToFile方法。我想通過循環找到它們,並替換爲空的NSString
's,但我無法實現它的工作。這是我正在嘗試的。如何從NSDictionary中刪除<null>的?
編輯:NSArrays和NSDictionaries由NSJSONSerialization創建。
for (NSMutableDictionary *mainDict in mainArray)
{
for(NSMutableDictionary *subDict in mainDict)
{
for(NSString *key in subDict)
{
id value = [subDict objectForKey:key];
if (value == [NSNull null])
{
[subDict setObject:@"" forKey:key];
}
}
}
}
但是這會引發異常。 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'
但是正如你所看到的所有NSDictionaries都是可變的。
這是怎麼回事? 有沒有更好的方法來做到這一點?
編輯:將新版本移至單獨的答案。
此外,枚舉時變更字典是錯誤並引發異常。 – 2012-11-17 09:07:14
是啊.....我會建議創建一個單獨的NSDictionary,並將其設置爲這個字典,他枚舉後枚舉 – MCKapur
好的謝謝。很難知道樹的結構,因爲它是由NSJSONSerialization創建的。我創建了一個帶有可變副本的新版本。我在這裏的正確軌道還是錯過了這一點? – TijuanaKez