iOS开发错误处理技巧,PCH文件的使用,自定义NSNotification消息以及设置监听者(以Core Data处理数据时的错误为例)

1.新建一个PCH文件,在该文件#import的头文件或者编写的代码,在整个项目中都有效

 

2.在PCH文件中添加以下代码,请按照以下格式进行编写,包括每一行后面的反斜杠

extern NSString * const ManagedObjectContextSaveDidFailNotification;

    #define FATAL_CORE_DATA_ERROR(__error__)\

        NSLog(@"*** Fatal error in %s:%d\n%@\n%@",\

            __FILE__, __LINE__, error, [error userInfo]);\          //在Debug区域显示错误信息

        [[NSNotificationCenter defaultCenter] postNotificationName:\    //设置发送NSNotification消息

            ManagedObjectContextSaveDidFailNotification object:error];    

 

3.在AppDelegate.m的didFinishLaunchingWithOptions方法中添加以下代码,让AppDelegate作为以上NSNotification消息的监听者,并在收到该消息时,调用fatalCoreDataError:方法

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fatalCoreDataError:) name:ManagedObjectContextSaveDidFailNotification object:nil];

 

4.在AppDelegate.m文件中添加以下代码,即弹出窗口让用户知道已经发生错误

-(void)fatalCoreDataError:(NSNotification *)notification

{

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Internal Error", nil) message:NSLocalizedString(@"There was a fatal error in the app and it cannot continue.\n\nPress OK to terminate the app. Sorry for the inconvenience.", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];

    [alertView show];

}

 

PS:以下两步用于找出错误

5.在AppDelegate.m文件中实现UIAlertViewDelegate

@interface AppDelegate () <UIAlertViewDelegate>

@end

6.在AppDelegate.m文件中添加以下代码,当弹出的窗口消失时停止APP运行,并指出错误代码的位置

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{

    abort();

}

 

7.在AppDelegate.m文件顶部添加以下代码,让该对象了解以上定义的NSNotification消息

NSString * const ManagedObjectContextSaveDidFailNotification = @"ManagedObjectContextSaveDidFailNotification";

 

8.在每个需要错误处理的地方添加以下代码

        NSError *error;

        FATAL_CORE_DATA_ERROR(error);

posted @ 2016-06-09 16:15  XuDeHong  阅读(363)  评论(0编辑  收藏  举报