2016-09-08 26 views
0

plistファイルを編集するコードがあります。しかし、コードが実行されると、plistファイルは変更されますが、他の辞書は削除されます。あなたはイメージを見て、私が何を意味するか見ることができます。plistをプログラムで編集するにはどうすればいいですか?

編集した単語を見るには、辞書 "項目1"と文字列 "名前"を見てください。 "Second"から "newVALUE"に変更する必要があることがわかります。

元plistは、plistが作成されたときのplistのイメージです。 次に、のplistがあります。これはplistの外観です。そして、編集plistは、コードが適用された後のplistです。

これはコードです:

NSString *plistPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
plistPath = [plistPath stringByAppendingPathComponent:@"PassaveData.plist"]; 

NSMutableArray* newContent = [[NSMutableArray alloc]initWithContentsOfFile:plistPath]; 
NSMutableDictionary *Dict = [[NSMutableDictionary alloc]initWithDictionary:[newContent objectAtIndex:1]]; 
[Dict setValue:@"newVALUE" forKey:@"name"]; 
[Dict writeToFile:plistPath atomically:YES]; 

これらは、あなたのオリジナルのplistは辞書の配列が含まれている画像

Click to see the images

答えて

1

です。新しい辞書を作成し、元の配列ベースのplistを1つの新しい辞書だけで上書きします。

更新された辞書で読み込まれた配列を更新し、更新された配列全体を書き出す必要があります。

NSMutableArray *newContent = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; 
NSMutableDictionary *dict = [newContent[1] mutableCopy]; 
dict[@"name"] = @"newVALUE"; 
newContent[1] = dict; 
[newContent writeToFile:plistPath atomically:YES]; 

アレイと辞書に最新の構文を使用することに注意してください。

+0

オリジナルの.piistファイルではないドキュメントディレクトリ内の更新データだと思います。 –

+0

最初のビルド後にアプリ名を変更したいと思いますが、どうすれば変更できますか?私はすでに試してみました[plistDict setValue:@ "com.xyz.Getdata" forKey:@ "CFBundleIdentifier"]; [plistDict setValue:@ "Getdata" forKey:@ "CFBundleName"]; [plistDict setValue:@ "MyProject" forKey:@ "CFBundleDisplayName"]; –

+0

@BhumeshPurohitアプリケーションのリソースバンドル内のファイルを更新することはできません。それは読み取り専用です。 – rmaddy

関連する問題