1

私はタイトルplist付きで、、はアプリのタイトルとパスワードを保存するための辞書です。サインインプロセスを確認したいのですが。Arrayitem0item1item2

ここにエネター 今私はパスをチェックしたいのですが、送信ボタンを押してログインするとアイテムが一致するはずです。以下のコードを試しましたが、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"); 
} 

 } 
 }

-(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の出力は正しくなりますが、クラッシュするとエラーが発生します。

 2012-12-07 16:52:54.025 NavTutorial[3029:f803] emailEntry: emailemail@gmail.com
 2012-12-07 16:52:54.057 NavTutorial[3029:f803] passwordEntry: abcd
 2012-12-07 16:52:54.081 NavTutorial[3029:f803] Correct credentials
 2012-12-07 16:52:54.081 NavTutorial[3029:f803] Correct credentials
 2012-12-07 16:52:54.082 NavTutorial[3029:f803] -[__NSCFString objectForKey:]:     unrecognized selector sent to instance 0x68e9c30
 2012-12-07 16:52:54.083 NavTutorial[3029:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x68e9c30'
 *** First throw call stack:
(0x14d7052 0x11c2d0a 0x14d8ced 0x143df00 0x143dce2 0x3e71 0x14d8ec9 0x3735c2 0x37355a 0x418b76 0x41903f 0x417e22 0x39893f 0x398c56 0x37f384 0x372aa9 0x1bcdfa9 0x14ab1c5 0x1410022 0x140e90a 0x140ddb4 0x140dccb 0x1bcc879 0x1bcc93e 0x370a9b 0x252d 0x24a5 0x1)
terminate called throwing an exception
4

2 に答える 2

1

Peter Mに同意しましたが、少なくともプレーンテキストでローカルに保存するべきではありません。エラースタックを投稿できれば非常に役立ちますので、何が失敗しているかを確認できます。

于 2012-12-06T18:49:57.797 に答える
1

私は実際に私のせいでした..コードはコード内にあるので、何度も実行されます..その後クラッシュします...しかしReturn、ループを終了するとfor...正常に動作します...小さいながらも強力な間違いです。

于 2012-12-07T12:38:07.693 に答える