iphone - 来自 Plist 的凭据匹配

标签 iphone ios xcode plist

我有一个plist,带有Array title 和item0,item1,item2 是用于存储我的应用程序的标题和密码的字典。现在我想检查登录过程

eneter here 现在我想检查通行证,当我按下提交按钮登录时,项目应该匹配。我尝试了下面的代码,但 xcode 崩溃了

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

for (int i = 0; i< [plistArray count]; i++) 
{ 
 if ([[[plistArray   objectAtIndex:i]objectForKey:@"pass"]isEqualToString:emailTextFeild.text] && [[[plistArray objectAtIndex:i]objectForKey:@"title"]isEqualToString:passwordTextFeild.text]) 
{ 
NSLog(@"Correct credentials"); 
 return;
} 
   NSLog(@"INCorrect credentials"); 
 } 
 }

-(NSArray*)readFromPlist
 {
   NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
  NSUserDomainMask, YES); 
  NSString *documentsDirectory = [documentPaths objectAtIndex:0];
 NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"XYZ.plist"];

   NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath];

   NSArray *valueArray = [dict objectForKey:@"title"];

   return valueArray;

 }

xcode 崩溃了..请检查 -(void)authenticateCredentials 我在哪里不正确?

当我选择 submit 按钮时崩溃,它不会在 nslog 中给出任何正确或不正确的输出,然后 Xcode 崩溃,错误

 2012-12-14 12:10:45.142 NavTutorial[1661:f803] emailEntry: hi@gmail.com.com
2012-12-14 12:10:45.145 NavTutorial[1661:f803] passwordEntry: hellohello
2012-12-14 12:10:45.153 NavTutorial[1661:f803] -[__NSCFConstantString objectForKey:]:   unrecognized selector sent to instance 0x1568cd8
2012-12-14 12:10:45.155 NavTutorial[1661:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString objectForKey:]:     unrecognized selector sent to instance 0x1568cd8'
 *** First throw call stack:
(0x14d7052 0x11c2d0a 0x14d8ced 0x143df00 0x143dce2 0x3981 0x14d8ec9 0x3735c2 0x37355a 0x418b76 0x41903f 0x417e22 0x39893f 0x398c56 0x37f384 0x372aa9 0x1bcdfa9 0x14ab1c5 0x1410022 0x140e90a 0x140ddb4 0x140dccb 0x1bcc879 0x1bcc93e 0x370a9b 0x211d 0x2095 0x1)
terminate called throwing an exception

两天前,同样的代码运行良好

如果我为 IF 条件设置断点,稍后如果在 if 条件之后失败。

最佳答案

如下所示修改您的 authenticateCredentials 并检查它是否有效。如果它显示错误消息为 Error!不是字典,你需要检查你的 plist 是否有正确的结构。大多数情况下,您的 [objDict objectForKey:@"pass"] 返回不同的数据类型。

- (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");
                return;
            }
            NSLog(@"INCorrect credentials");
        } else {
             NSLog(@"Error! Not a dictionary");
        }
    }
}

关于iphone - 来自 Plist 的凭据匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13873968/

相关文章:

ios - 使用 Swift 将 JSON 字符串转为 NSDictionary

iphone - CoreData 错误让我发疯... CoreData : Serious application error. 从 NSFetchedResultsController 委托(delegate)捕获的异常

ios - Flash Builder - iPad 3 分辨率

iOS - 如何处理应用程序屏幕中存在长文本区域的情况?

ios - 通过 iOS 应用程序将图像上传到 Salesforce

ios - 我应该把按钮的 Action 放在 UITableViewDelegate 的什么地方

ios - 架构 i386 的 undefined symbol : trying to add in AVFoundation

ios - 如何为 Mapview iOS 中添加的 MKOverlayRenderer 设置动画?

javascript - $(document).click() 在 iPhone 上无法正常工作。查询

iphone - Apple 当前的 Reachability 类是否向后兼容 iOS 3.1?