iOSプログラミングの初心者で、手を汚しています。私はネットで plist のヘルプを検索し、何かを得て、それを理解して使用しましたが、今はある時点で立ち往生しています。私はこの問題をたくさん探しました。しかし、私は正しい答えを見つけることができません。
問題: 私の UI には 2 つのテキスト フィールドと 1 つの保存ボタンしかありません。1 つのテキストフィールドは文字列を受け取り、もう 1 つのテキストフィールドは数値 (int) を入力として受け取ります。
私のplistには、1つの文字列アイテムと1つのintアイテムを持つ1つの辞書アイテムがあります。それでおしまい。
ユーザーから 2 つの UITextViews で入力を受け取り、保存ボタンを介してこの plist に保存します。
問題は、新しい値を入力して保存ボタンを押すたびに、古い plist データが上書きされることです。
目的の出力を得るには、辞書を読み取り、新しい値を追加してから保存する必要があることがわかりました。しかし、この概念をつかんでコードに入れることはできません。説明付きのコードは本当に役に立ちます。
私の保存ボタンは次のように機能します:
-(IBAction)saveit
{
// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"data.plist"];
// set the variables to the values in the UITextField text1 n text2 respectively
self.personName = text1.text;
num = (int)text2.text;
// create dictionary with values in UITextFields
NSDictionary *plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: personName, num, nil] forKeys:[NSArray arrayWithObjects: @"name", @"phone", nil]];
NSString *error = nil;
// create NSData from dictionary
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
// check is plistData exists
if(plistData)
{
// write plistData to our Data.plist file
[plistData writeToFile:plistPath atomically:YES];
}
else
{
NSLog(@"Error in saveData: %@", error);
// [error release];
}
}
このコードは、新しい値を上書きしているだけで問題なく動作しています。助けてください。