2012-01-21 6 views
0

私はキーと値を持つplistファイルを持っているので、後で呼び出すことができるように、その値でキーを保存できるようにします。私はコールバック部分をすべてプログラムしましたが、私はそれを保存できる必要があります。今私はこれを持っている:新しいキーをplistに追加するには?

- (IBAction)addKey:(id)sender { 
    NSString *string1 = [input stringValue]; 
    NSString *string2 = [filesField stringValue]; 

    NSMutableDictionary *fileKeys = [[NSMutableDictionary alloc] initWithContentsOfFile: 
          [[NSBundle mainBundle] pathForResource:@"Keys" ofType:@"plist"]]; 
    [fileKeys setValue:string2 forKey:string1]; 
} 

私が何か間違ったことをやって、それがPLISTにそのキーとその値を追加doesntの。

答えて

2

まず、バンドル内のplistファイルを更新する必要はありません。それが動作している間は、アプリケーション上の署名が破られ、サンドボックスの下で確実に破損します。

代替手段として、オリジナルのplistをバンドルに保存し、アプリケーションを初めて実行するときにアプリケーションのアプリケーションサポートフォルダにコピーすることができます。

第2に、修正された辞書をファイルシステムに書き戻す必要があります。NSDictionarywriteToURL:atomicallyまたはwriteToFile:atomicallyの方法でこれを行うことができます。

+2

また、NSUserDefaultsに格納するものを格納することも考えられます。 NSUserDefaultsは、最初に作成されたときにplistからデフォルトで初期化できるので、設定などには理想的です。格納しているデータが大きくてNSUserDefaultsに適していない場合は、上記の方法がおそらく最適です。 –

+0

また、アプリバンドル内のファイルを変更できるかもしれないことを強調しておく価値はありますが、*できない可能性はさらに高いです。アプリのバンドルにあるものが書き込み可能であるとは決して考えないでください。 –

+0

答えをありがとう、私はこれを行う場合、私のアプリが更新されるたびに、追加されたアイテムを削除するので、私はこの機能 – drewsdunne

0

plistだけではありません。また、格納する内容に応じて、コアデータを実装することもできます。 CDを使用すると、GUIのコントロールをCDの項目にバインドすることができるようになると非常に便利です。 基本的には、ユーザー用とアイテム用のエンティティが必要です。これにより、バンドル内で構成を保持することができます。サンドボックスの下で壊れてはいけませんが、今まではサンドボックスを使った実践的な経験はありません。

関連する問題