2012-01-11 14 views
2

複数のデータセットを格納するためにplistを取得しようとしていますが、(ActionSheetからボタンを使用して)保存するたびに、前のセットを上書きします。私は複数の「友人」とそのデータを追加したい。私はコアデータの使用に熱心ではないので、あなたはPlistでそれをどうやって行うことができるのだろうかと思っています。私は保存するたびに友人の新しいデータセットを追加するコードを変更することができますどのように、新しいデータセットをPlistに上書きせずに書き込む

 NSMutableDictionary *friend = [[NSMutableDictionary alloc] init]; 

     NSMutableDictionary *array = [[NSMutableDictionary alloc]init]; 
     [array setObject:friendName.text forKey:@"Name"]; 
     [array setObject:friendPhone.text forKey:@"Phone Number"]; 
     [array setObject:friendEmail.text forKey:@"Email Address"]; 
     [array setObject:friendChatSN.text forKey:@"Chat Screen Name"]; 

     [friend setValue:array forKey: @"Friend Data"]; 


     NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

     NSString *documentsPath = [paths objectAtIndex:0]; 

     NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"FriendList.plist"]; 

     [friend writeToFile:plistPath atomically: TRUE]; 

の代わりに、それを上書き:ここ

は、保存ボタンのコードですか?

+0

私は何かまたは[友達のsetValue:配列forKey: "フレンドデータ" @]を欠場があります。あなたの問題ですか?あなたは古いデータを上書きして、配列の値を同じキーに設定します。 –

+0

私はそれを上書きしています。私はiOSにはかなり新しいので、新しい値を保存するコードを書く方法はわかりません。もう少し明示的にして自分のコードを修正できるなら、本当に感謝しています。 –

答えて

10

ここで、pListは1つのオブジェクトとして動作します。いつでもplistに何かを書き込もうとすると、新しいデータに置き換えられます。

複数の友人のレコードをplistファイルに保存するように見えます。あなたの質問のベストソリューションは、コアデータまたはsqliteを使用することです。しかし、plistを使用してそれを達成したい場合は、まずplistから古いデータを取得し、新しいデータ(友人)を古いデータに追加してplistに保存してください。

あなたの要件に従って、NSDictionary(友人レコード)オブジェクトをpListに保存すると、NSArrayを保存する必要があります。

ここで変更されたコード

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsPath = [paths objectAtIndex:0]; 

    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"FriendList.plist"]; 

    NSMutableArray *friend = [NSMutableArray arrayWithContentsOfFile:plistPath]; 

    if (nil == friend) { 
     friend = [[NSMutableArray alloc] initWithCapacity:0]; 
    } 
    else { 
     [friend retain]; 
    } 


    NSMutableDictionary *array = [[NSMutableDictionary alloc]init]; 
    [array setObject:friendName.text forKey:@"Name"]; 
    [array setObject:friendPhone.text forKey:@"Phone Number"]; 
    [array setObject:friendEmail.text forKey:@"Email Address"]; 
    [array setObject:friendChatSN.text forKey:@"Chat Screen Name"]; 

    [friend addObject:array]; 
    [array release]; 



    [friend writeToFile:plistPath atomically: TRUE]; 
    [friend release]; 
+1

ありがとうございます。私は本当にあなたの助けに感謝します。 –

0

の代わりに[friend setValue:array forKey:@ "Friend Data"];友人名+姓(少なくとも...)のように、@ "Friend Data"の代わりに一意のキーを使用するか、辞書に1つずつ入力する必要があります。

関連する問題