来自Plist的凭证匹配 [英] Credential match from Plist
问题描述
我有一个plist
带有Array
标题,并且item0
,item1
,item2
是用于存储我的应用程序的标题和密码的字典.现在我要检查登录过程
I have a plist
with Array
title and item0
,item1
,item2
is dictionary to store title and password of my app.now i want to check for signin process
现在我想检查通行证,并且当我按下提交"按钮登录时,项目应该匹配.我尝试了以下代码,但xcode崩溃了
now i Want to check for pass and items should be matched when i press submit button to login.i Tried the below code but xcode crashes
-(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
?
the xcode gets crashs ..please check in -(void)authenticateCredentials
where i am incorrect?
AND
当我选择submit
按钮时发生崩溃,它不会在nslog中给出任何正确或不正确的输出,然后Xcode
崩溃,然后带有errorr
AND
Crash when I select the submit
button,Its wont give any output correct or incorrect in nslog and Xcode
crash then , with errorr
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
和 两天前,相同的代码工作正常
and two days ago this same code worked fine
和,如果我将断点设置为IF
条件,并且稍后在if条件之后失败.
and if i put Breakpoint for IF
condition and later if fails just after if condition.
推荐答案
按如下所示修改authenticateCredentials
并检查其是否正常运行.如果显示错误消息为Error! Not a dictionary
,则需要检查plist是否具有正确的结构.通常,您的[objDict objectForKey:@"pass"]
返回的是不同的数据类型.
Modify your authenticateCredentials
as shown below and check if it is working. If it is showing an error message as Error! Not a dictionary
, you need to check if your plist is having correct structure. Mostly your [objDict objectForKey:@"pass"]
is returning a different data type.
- (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");
}
}
}
这篇关于来自Plist的凭证匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!