1

plistにクレデンシャルを保存しましたが、そこから正しいクレデンシャルを確認する必要があります。正しいクレデンシャルが一致する場合は、パスワードフィールドを新しいものに置き換えますUITextField。新しいemail-idの場合はa、現在のパスワードの場合はb、新しいパスワードの場合はc ..ifa==bcurrent password == email id、cテキストフィールドに入力された新しいパスワードが。の現在のパスワードフィールドに置き換わる必要があることを意味しますplist ここにエネター

 - (void)authenticateCredentials {
NSMutableArray *plistArray = [NSMutableArray arrayWithArray:[self readFromPlist]];

for (int i = 0; i< [plistArray count]; i++)
{
    id object = [plistArray objectAtIndex:i];

    if ([object isKindOfClass:[NSDictionary class]]) {
        NSDictionary *objDict = (NSDictionary *)object;

        if ([[objDict objectForKey:@"pass"] isEqualToString:emailTextFeild.text] && [[objDict objectForKey:@"title"] isEqualToString:passwordTextFeild.text])
        {

            NSLog(@"Correct credentials");
            // what should be the condition to replace current password to new password
        }
        NSLog(@"INCorrect credentials");
    } else {
         NSLog(@"Error! Not a dictionary");
    }
}
}
4

2 に答える 2

1

これがうまくいくかどうかを確認してください。

- (void)authenticateCredentials {

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                 NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentPaths objectAtIndex:0];
    NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"XYZ.plist"];
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath];
    NSArray *plistArray = [dict objectForKey:@"title"];

    NSMutableArray *plistUpdatedArray = [NSMutableArray arrayWithArray:plistArray];

    for (int i = 0; i< [plistArray count]; i++)
    {
        id object = [plistArray objectAtIndex:i];

        if ([object isKindOfClass:[NSDictionary class]]) {
            NSDictionary *objDict = (NSDictionary *)object;

            if ([[objDict objectForKey:@"pass"] isEqualToString:emailTextFeild.text] && [[objDict objectForKey:@"title"] isEqualToString:passwordTextFeild.text])
            {
                NSLog(@"Correct credentials");

                NSMutableDictionary *dict1 = [NSMutableDictionary dictionaryWithDictionary:objDict];
                [dict1 setObject:newPassword forKey:@"title"];

                [plistUpdatedArray replaceObjectAtIndex:i withObject:dict1];

                NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithDictionary:dict];
                [dict2 setObject:plistUpdatedArray forKey:@"title"];
                [dict2 writeToFile:documentPlistPath atomically:YES];

                return;
            }
            NSLog(@"INCorrect credentials");
        } else {
             NSLog(@"Error! Not a dictionary");
        }
    }
}
于 2012-12-14T08:09:39.917 に答える
1

plistがバンドルされている場合、そこに保存されている値を変更することはできません。したがって、変更を行う前に、ドキュメントディレクトリにコピーしてください。

あなたの質問への答え:

if([emailField.text isEqualToString:currntPwd.txt])
{
   NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
  [newDict addEntriesFromDictionary:objDict];
  [newDict setObject:@"Midhun" forKey:@"pass"];
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES);
   NSString *docDirectory = [paths objectAtIndex:0];
   NSString *plistPath = [docDirectory stringByAppendingPathComponent:@"yourPlist.plist"];
   [[NSFileManager defaultManager] removeItemAtPath:plistPath];
   [newDict writeToFile:plistPath atomically:YES];
}
于 2012-12-14T08:10:25.377 に答える