我正在尝试打印出一个名为Contact的对象(我写的NSObject的扩展名)。
当我的应用首次启动时,我有以下代码:
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);
所以,我把我的数组称为“a”并尝试将其打印出来。嗯,这不起作用。该程序只是坐在那里,没有做任何事情。它没有错误输出或退出,它实际上只是停止做任何事情。
所以我打印计数,结果是1.显然阵列中有一些东西。那么,我从数组中获取第一个Contact,并且我的控制台打印出“get contact”。
然后,我测试看看该联系人是否为零。嗯,不是。
然后,我尝试打印联系人。我的程序停止运行。在控制台中,我只看到“(gdb)”并且没有打印,也没有任何内容继续运行。该计划就在这里。
发生了什么事?我只是打印一个联系人(顺便说一句,它有一个描述方法设置,只打印出一个NSString)。
答案 0 :(得分:0)
我敢打赌c
是一个糟糕的对象。试试NSStringFromClass([c class])
,同时尝试单步进入调试器,看看它是如何运行的。