iOS小记--Unknown error calling sqlite3_step (10: disk I/O error) rs

这个log是FMDB里面的,贴一下源码

顺势找了一下10的出处,在sqlite3.h里找到如下宏定义:

#define SQLITE_IOERR      10  /* Some kind of disk I/O error occurred */

到此为止,除了知道是硬盘的读写报错外并没有什么其他进展。经过多次实验,发现只有在打开了锁屏密码iPhone屏幕锁定时才如题的log,猜测是iOS在这样的条件下设置了访问限制。

好在出了sqlite,项目里还写了一些txt文件log,就藏在documents下。找到代码:

[fileHandle writeData:stringData];

通过fileHandle将字符串写入文件中。但是问题来了,

- (void)writeData:(NSData *)data;

在NSFileHandle的头文件中方法的声明如下,并没有任何error的description,这样我怎么知道它失败了呢?怎么知道它为啥失败哩?来回翻了几遍头文件,确认没有其它的带error的write方法,也没有NSFilehandel的public属性。差点心灰意冷的时候,顺手在Documentation里搜索下,果然,在文档里又这样一段Discussion

这个方法是会抛异常的,写文件嘛,总是天有不测风云,谁能保证一定成功。修改代码如下:

iOS小记--Unknown error calling sqlite3_step (10: disk I/O error) rs_第1张图片

果然给我抓到了exception。但是结果并不十分如意,异常的描述除了一句Operated not permission也没有其它有价值信息。

可以确定的是iPhone在锁屏状态下(Passcode opened)会有文件操作限制,测试内容里sqlite和txt都是这样,可是在翻了好多文档之后也并没有找到关于这一点的有力说明。这一点着实让人遗憾,如果有哪位大神对此很清楚,烦请告知一二,不胜感激。

你可能感兴趣的:(iOS小记--Unknown error calling sqlite3_step (10: disk I/O error) rs)