LoginSignup
10
9

More than 5 years have passed since last update.

pListファイルを書き換え可能な状態で辞書に読み込む

Posted at

pListファイルは、以下のようにNSDictionaryに簡単に読み込むことが可能です。

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:@"ファイルパス"];

しかしながら、NSDictionaryはimmutableなオブジェクト、つまり書き換え不可能なクラスなので、中身を編集したい、という用途ではいちいち作り直さないといけません。
しかも必要であれば表面だけでなく再帰的にやらないといけません。

できることなら読み込んだ瞬間からmutableでやりたいですね。パフォーマンス的にも、コードのシンプルさとしても。

というわけで方法があります。


NSString *errorDesc;
NSMutableDictionary *dic = [NSPropertyListSerialization propertyListFromData:[NSData dataWithContentsOfFile:@"ファイルパス"]
                                                                                              mutabilityOption:NSPropertyListMutableContainers
                                                                                                              format:nil 
                                                                                               errorDescription:&errorDesc];

この方法の良いところは、再帰的に内部のコンテナを全部編集可能な(Mutableな)クラスで読み込んでくれるという点です。
NSDictionaryではなく、NSMutableDictionary
NSArrayではなく、NSMutableArray
にしてくれるわけです。

NSPropertyListMutableContainersがその指定です。
指定するフラグはもう数種類あるので確認してみると良いとおもいます。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9