2012-01-22 6 views
0

plistをメモリに読み込み、ユーザーが行をタップすると値の1つを変更する必要があります。plistから作成された配列を更新する方法 - ReadOnly

私はplistをメモリに読み込んだ後、テーブルビューで表示します。

これは、メモリに読み込まれる:

self.questions = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"q1" ofType:@"plist"]]; 

その後、私はちょうどそのメモリ内の一方で、値のいずれかを更新する必要があります。私は別の全体の配列を作ることができると思いますが、私はこのような何かを行うことができるはずかのように思える:

[[[self.questions valueForKey:title] objectAtIndex:indexPath.row] valueForKey:@"Checked"] = @"1"; 

これを実行すると、私は値が読み取り専用であるというエラーを取得します。オフにしてチェックを処理する別の配列を作成することに短いですが、これを行う方法はありますか?

ありがとうございました!

+0

可能な重複問題にします。http://stackoverflow.com//8884215/append-data-to-plist-iphone/8884515#8884515 –

答えて

0

+[NSPropertyListSerialization propertyListWithData:options:format:error:]を使用してファイルの内容をデコードし、NSPropertyListMutableContainersオプションまたはNSPropertyListMutableContainersAndLeavesオプションを渡します。

+0

すでに存在する配列の値を変更しようとしています。私の質問の2行目の例を参照してください...私はあなたの提案でそれをどうやって行いますか? –

+0

'setValue:forKey:'メソッドを使います。 –

+0

申し訳ありません本当に密集しています...これはどこにsetvalueを入れますか?[[[self.questions valueForKey:title] objectAtIndex:indexPath.row] valueForKey:@ "Checked"]; –

1

だけself.questionsためNSMutableDictionaryクラスを使用します。

を* .hの

NSMutableDictionary *questions; 

に* .mを

self.questions = [NSMutableDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"q1" ofType:@"plist"]]; 
+0

辞書のフィールドのいずれかに値を割り当てるにはどうすればよいですか? –