3

コーディングを通じて、データが既に存在するかどうかを確認した後、plist 内の既存のデータを上書きするにはどうすればよいですか

詳細に:

ドキュメント ディレクトリにある plist ファイルにユーザー名とパスワードを保存しています。ユーザーがパスワードの変更オプションを選択した場合、plist はユーザー名が存在するかどうかを確認する必要があります。存在する場合、彼が入力している新しいパスワードは、plist の既存のパスワードを上書きする必要があります。

誰かがサンプルコードを手伝ってくれますか

4

2 に答える 2

3

アプリケーション バンドルに格納されている plist を変更することはできません。plist に保存されているユーザー データを編集する必要がある場合は、ドキュメント ディレクトリに plist を作成する必要があります。

別のオプションはNSUserDefaultsです。sqlite3膨大なデータがある場合は、データベースをお勧めします。それ以外の場合は、plistまたはを使用できますNSUserDefaults

次のように plist の値を変更できます。

NSString *path = //your plist path in document directory;
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSString *userExist = [plistDict objectForKey:@"UserName"]; //test the user exist
if([userExist isEqualToString:@"Midhun"])                   //checking user exist or not
{
  NSString *userPwd = @"Midhun";
  [tempDict setObject:userPwd forKey:@"PassWord"]; //Password is your key
  [tempDict writeToFile:path atomically:YES];
}

詳細については、このリンクを参照してください。これはあなたのためのplistチュートリアルです。

于 2012-10-22T11:11:26.887 に答える
0

バンドル ディレクトリにある場合、plist のデータを編集することはできません。バンドル内に存在するファイルには、「読み取り専用」権限があります。plist がドキュメント ディレクトリ内にある場合は、次の手順を使用して編集できます。(1)plistからデータを取得します。(2)更新します。(3)更新したデータをplistに書き戻す。

NSString *path= [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"plist"];

if(path)

 NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

//Update the respective dictionary dict here.

//write back to plist.

[dict writeTofile:path atomically:YES];
于 2012-10-22T10:51:32.997 に答える