Iphone 在Plist中编辑凭证(如果正确)

Iphone 在Plist中编辑凭证(如果正确),iphone,ios,plist,Iphone,Ios,Plist,在plist中,我存储了来自的凭据,我需要检查正确的凭据,如果正确的凭据匹配,则用新的替换密码字段。为此,我有3个UITextField。A表示新的电子邮件id,b表示当前密码,c表示新密码。如果A==b表示current password==email id,则在c文本字段中输入的新密码应替换为plist中当前密码字段中的新密码 -(无效)身份验证凭据{ NSMUTABLEARRY*plistArray=[NSMUTABLEARRY arrayWithArray:[self readFrom

在plist中,我存储了来自的凭据,我需要检查正确的凭据,如果正确的凭据匹配,则用新的替换密码字段。为此,我有3个
UITextField
。A表示新的电子邮件id,b表示当前密码,c表示新密码。如果
A==b
表示
current password==email id
,则在c文本字段中输入的新密码应替换为
plist中当前密码字段中的新密码

-(无效)身份验证凭据{
NSMUTABLEARRY*plistArray=[NSMUTABLEARRY arrayWithArray:[self readFromPlist]];
对于(int i=0;i<[plistaray计数];i++)
{
id object=[plistaray objectAtIndex:i];
if([object iskindof类:[NSDictionary类]]){
NSDictionary*objDict=(NSDictionary*)对象;
如果([[objDict objectForKey:@“pass”]IseQualtString:emailTextFeild.text]&&[[objDict objectForKey:@“title”]IseQualtString:passwordTextFeild.text])
{
NSLog(“正确的凭证”);
//将当前密码替换为新密码的条件是什么
}
NSLog(@“不正确的凭证”);
}否则{
NSLog(@“错误!不是字典”);
}
}
}

检查这是否适合您

- (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");
        }
    }
}
-(无效)身份验证凭据{
NSArray*DocumentPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,是);
NSString*documentsDirectory=[documentPaths objectAtIndex:0];
NSString*documentPlistPath=[DocumentsDirectoryStringByAppendingPathComponent:@“XYZ.plist”];
NSDictionary*dict=[NSDictionary Dictionary WithContentsOfFile:documentPlistPath];
NSArray*plistArray=[dict objectForKey:@“title”];
NSMutableArray*plistUpdatedArray=[NSMutableArray阵列WithArray:plistArray];
对于(int i=0;i<[plistaray计数];i++)
{
id object=[plistaray objectAtIndex:i];
if([object iskindof类:[NSDictionary类]]){
NSDictionary*objDict=(NSDictionary*)对象;
如果([[objDict objectForKey:@“pass”]IseQualtString:emailTextFeild.text]&&[[objDict objectForKey:@“title”]IseQualtString:passwordTextFeild.text])
{
NSLog(“正确的凭证”);
NSMutableDictionary*dict1=[NSMutableDictionary Dictionary WithDictionary:objDict];
[dict1 setObject:newPassword forKey:@“title”];
[plistUpdatedArray replaceObjectAtIndex:i with object:dict1];
NSMutableDictionary*dict2=[NSMutableDictionary Dictionary WithDictionary:dict];
[dict2 setObject:Darray forKey:@“标题”];
[dict2 writeToFile:documentPlistPath原子性:是];
返回;
}
NSLog(@“不正确的凭证”);
}否则{
NSLog(@“错误!不是字典”);
}
}
}

如果plist在bundle中,则无法更改其中存储的值。 所以,在进行任何更改之前,请将其复制到文档目录

回答你的问题:

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];
}

嗨,我需要你的帮助,关于同一个问题。。在其他一些屏幕中,我必须获取登录用户的电子邮件id,并显示在标签中……我已在新屏幕中使用Readplist函数现在如何调用登录用户的电子邮件id检查此链接
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];
}