在GCD块中捕获NSJSONSerialization时出错

时间:2014-04-09 15:30:54

标签: ios objective-c ios7 objective-c-blocks

我需要在GCD块中的NJSONSerialization调用中显示错误。我想创建一个警报,告诉用户检查他们的互联网连接,然后检查错误代码:

这是我的一些代码:

这是为了加强不在主线程上的块:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)

然后我有了这个

NSMutableDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: &error];

现在我猜错误存储在&错误中,但是如何在该块中的警报中显示错误?

一些代码将是辉煌的。

谢谢

1 个答案:

答案 0 :(得分:1)

你做这样的事......

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    NSError *error = nil;

    NSMutableDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: &error];

    if (error) {
        // you have to show the alert on the main thread
        dispatch_async(dispatch_get_main_queue, ^(void) {
            [[[UIAlertView alloc] initWithTitle:@"Error" message:error.userInfo delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
        });
    }
});

您可能希望根据错误显示自己的消息,而不是仅显示错误。