2011-07-14 17 views
0

私は連絡先(NSObjectの拡張版)と呼ばれるオブジェクトを印刷しようとしています。私のアプリ最初の起動は、私は次のコードを持っている場合はオブジェクトを印刷する - iPhoneアプリケーション

NSMutableArray *arr = [UserData getGroupNames]; 
    NSLog(@"group names are %@",arr); 
    for(int i = 0; i < [arr count]; i++) { 
     NSString *name = [arr objectAtIndex:i]; 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     NSData *data = [defaults objectForKey:name]; 
     NSArray *a = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
     NSLog(@"name = %@",name); 
     NSLog(@"array count is %i",[a count]); 
     for(int i = 0; i < [a count]; i++) { 
      NSLog(@"on index %i",i); 
      Contact *c = [a objectAtIndex:i]; 
      NSLog(@"got contact"); 
      if(c == nil) 
       NSLog(@"it's nil!");  
      NSLog(@"contact first name = %@",[c getFirst]); 
      NSLog(@"got contact %@",c); 

だから、私はと呼ばれる私の配列を取得「」と試してみて、それをプリントアウト。それはうまくいきません。プログラムはそこに座って何もしません。それはエラーを出さない、または出ることはありません。文字通り何かをやめるだけです。

私は数を表示し、それは1になることが分かりました。明らかに配列には何かがあります。それでは、私はアレイから最初のContactをつかんで、私のコンソールは "連絡が取れました"というメッセージを表示します。

次に、その接触がゼロであるかどうかを調べるためにテストします。まあ、そうではありません。

次に、私は連絡先を印刷しようとします。私のプログラムは動作を停止します。コンソールで私は "(gdb)"と表示され、何も表示されず、何も実行されません。プログラムはちょうど座っている。

何が起こっていますか?私はちょうど連絡先を印刷しています(ところで、NSStringを印刷するだけの記述方法が設定されています)。

+0

「印刷」とはどういう意味ですか?画面、コンソール、またはAirPrintで表示しますか? – EmilioPelaez

+0

それは私のコードで明らかです。私はそのオブジェクト "c"でNSLogを実行しようとしています – CodeGuy

+0

@ reising1 NSLog(@ "contact first name =%@"、[c getFirst]);あなたはそれが印刷されているとは言いません。 –

答えて

0

cは悪いオブジェクトです。 NSStringFromClass([c class])を試してみてください。デバッガをステップ実行して、デバッガの動作を確認してください。

+0

私はそれを印刷しました。それは正しいです: "連絡先" – CodeGuy

+0

http://stackoverflow.com/questions/6698088/nsuserdefaults-nscoder-custom-class-iphone-app-question – CodeGuy

+0

ああ、そう、 'c' * *悪かった、解放されたオブジェクトを参照していた – bshirley

関連する問題