2013-04-28 98 views
3

Xcode 4.6.1与iOS 6.1。我正在使用StackMob的远程数据库。应用程序首先给出一个错误,在我点击Play几次之后,它运行良好并且与服务器通信就好。不知道如何检测问题,并应该担心?XCode:异常。如何检测原因?

我有以下异常断点设置:

enter image description here

应用程序运行,然后停在下面一行: enter image description here

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"email == %@", self.emailAddressField.text]; 
    [fetchRequest setPredicate:predicate]; 

    NSError *error = nil; 
    NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]; 

所以我改变上面的一行:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext]; 
     [fetchRequest setEntity:entity]; 

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username == %@", self.usernameField.text]; 
     [fetchRequest setPredicate:predicate]; 

     [managedObjectContext executeFetchRequest:fetchRequest onSuccess:^(NSArray *fetchedObjects) 
      { 

现在,当我运行程序时,我得到以下错误:

enter image description here

enter image description here

所以我点击播放按钮

,我得到以下错误:

enter image description here

当我再次点击播放后,应用程序继续运行,好像什么都没有发生?我应该担心吗?

+0

请发表您的代码作为文本,而不是图像。 – Linuxios 2013-04-28 21:11:45

+0

我尽可能地添加了代码,但我想我真的需要一些图片来说明。 – user1107173 2013-04-28 21:15:20

+1

@ user1107173 +1图片! – Undo 2013-04-28 21:40:47

回答

4

一旦调试程序停止发生异常,您可以使用简单的lldb命令检查异常是什么。选择喜欢在你的线程6这里的例外:

enter image description here

然后,如果你是在模拟器类型的运行:

po $eax 

如果您在设备上运行:

po $r0 (for 32-bit) 
po $x0 (for 64-bit) 

你应该得到一个异常的描述。

+0

每天学习新东西。谢谢。等待6分钟的等待时间结束后,我会标记为已回答。 – user1107173 2013-04-28 21:20:03

1

你已经有了这个代码:

NSError *error = nil; 
NSArray *fetchedObjects = 
    [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]; 

因此,所有你需要的是继续前进(无断点),并允许错误日志本身:

if (!fetchedObjects) 
    NSLog(@"%@", error.localizedDescription);