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);
转载于:https://www.cnblogs.com/guitarandcode/p/5572429.html
iOS开发错误处理技巧,PCH文件的使用,自定义NSNotification消息以及设置监听者(以Core Data处理数据时的错误为例)...相关推荐
- iOS开发 - OC - PCH文件使用
一. PCH文件的作用 Xcode中,PCH文件在程序编译的时候会自动包含进去.也就是说PCH中的内容是全局的,可以使用在程序的任何地方,通过这个特性,我们可以概括到PCH的作用有以下几个方面: (1 ...
- 【iOS开发-59】LOL案例:单组tabView、alertView样式、实现监听,以及用reloadData数据刷新
案例效果: (1)先在storyboard中拖拽出一个tableView,然后以下用代码. --tableView继承自scrollView,所以自然有滚动的特性 --最主要的还是数据转模型,以及对c ...
- java向数据库插入数据时的错误: Duplicate entry ‘‘ for key ‘PRIMARY‘ 问题解决
java向数据库插入数据时的错误: Duplicate entry '' for key 'PRIMARY' 问题解决 参考文章: (1)java向数据库插入数据时的错误: Duplicate ent ...
- iOS 开发 : 14个技巧助你适配 iOS10
iOS 开发 : 14个技巧助你适配 iOS10 1.Notification(通知) 自从 Notification 被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 1 ...
- iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
layout: post #iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件) title: iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件) #时间配置 d ...
- IOS开发基础之绘制饼图、柱状图、自定义进度条
IOS开发基础之绘制饼图.柱状图.自定义进度条 源码在我的主页里 1.绘制饼图 效果 源码 // LJView.m // 34-绘图饼图 // Created by 鲁军 on 2021/2/23. ...
- Kaggle上传数据时出现错误,且不是网络问题
Kaggle上传数据时出现错误,且不是网络问题 Kaggle上传数据processing 数据时出现错误 Kaggle上传数据processing 数据时出现错误 Kaggle上传数据时,能够上传数据 ...
- ios开发 c语言打包.a文件,【转】IOS静态库a文件制作流程
原文网址:http://www.jianshu.com/p/3439598ea61f 1.新建Cocoa Touch Static Library工程 新建工程 2.Xcode的参数设置 " ...
- iOS开发常用的技巧
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPhone Size 手机型号 屏幕 ...
最新文章
- 计算机专业申请,申请计算机专业
- ie浏览器中 overflow:hidden无作用的解决方案
- 组建校园网计算机网络设计,小型校园网的设计与组建Word版
- mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare
- 服务器闰秒 linux,闰秒导致部分 Linux 服务器高 CPU 使用率
- pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
- 超详细Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
- 光环PMP 串讲冲刺 场景题目分析
- 博微三维技术篇【八】——智能CAD识别
- 1.8版道士装备取向与PK方法
- iPad中国内地商标权诉讼调查
- 软考系统集成项目管理工程师模拟题
- 通过安卓手机,获取微信小程序包进行反编译方法
- Word控件Spire.Doc 【图像形状】教程(11): 如何在 C# 中为 Word 中的图像设置 Transeperant 颜色
- 添加完商品后,点货品显示此商品不存在规格,请为其添加规格?
- 贝叶斯网络、拉普拉斯平滑
- Elixir - Module
- Html+Css实现九大行星动画效果
- 和GGA的第一次亲密接触
- hdu 5445 Food Problem (多重背包)
热门文章
- vue import request from ‘@/xxx/xxx‘,@是什么意思怎样配置
- CentOS 8安装Redis的两种方式
- idea添加添加自动添加版本控制
- RedHat6.4安装IBM MQ7.5
- (转) Dockerfile 中的 COPY 与 ADD 命令 1
- 磁盘格式化(mkfs命令)、磁盘挂载(mount)、手动添加swap
- paramiko模块实现堡垒机的思路
- STP的根端口与指定端口
- openStack 手动部署文档
- LINUX下的流量监控shell脚本