3

Xcode 4.6.1 与 iOS 6.1。我正在使用带有 StackMob 的远程数据库。应用程序首先出现错误,在我单击播放几次后,它运行良好并与服务器通信正常。不确定如何发现问题,是否应该关注?

我有以下异常断点设置:

在此处输入图像描述

应用程序运行,然后在以下行停止: 在此处输入图像描述

   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)
            {

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

在此处输入图像描述

在此处输入图像描述

所以我点击播放按钮在此处输入图像描述

我收到以下错误:

在此处输入图像描述

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

4

2 回答 2

4

一旦调试器在异常上停止,您可以使用简单的 lldb 命令检查异常是什么。在此处选择线程 6 中的异常:

在此处输入图像描述

然后,如果您在模拟器类型上运行:

po $eax

如果您在设备上运行:

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

您应该得到异常的描述。

于 2013-04-28T21:16:33.160 回答
1

你已经有了这个代码:

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

所以你需要做的就是继续(没有断点)并允许错误记录自己:

if (!fetchedObjects)
    NSLog(@"%@", error.localizedDescription);
于 2013-04-28T21:22:28.717 回答