這個(gè)log是FMDB里面的盖彭,貼一下源碼
順勢(shì)找了一下10的出處,在sqlite3.h里找到如下宏定義:
#define SQLITE_IOERR? ? ? 10? /* Some kind of disk I/O error occurred */
到此為止事甜,除了知道是硬盤的讀寫(xiě)報(bào)錯(cuò)外并沒(méi)有什么其他進(jìn)展谬泌。經(jīng)過(guò)多次實(shí)驗(yàn),發(fā)現(xiàn)只有在打開(kāi)了鎖屏密碼iPhone屏幕鎖定時(shí)才如題的log逻谦,猜測(cè)是iOS在這樣的條件下設(shè)置了訪問(wèn)限制掌实。
好在出了sqlite,項(xiàng)目里還寫(xiě)了一些txt文件log邦马,就藏在documents下贱鼻。找到代碼:
[fileHandle writeData:stringData];
通過(guò)fileHandle將字符串寫(xiě)入文件中。但是問(wèn)題來(lái)了滋将,
- (void)writeData:(NSData *)data;
在NSFileHandle的頭文件中方法的聲明如下邻悬,并沒(méi)有任何error的description,這樣我怎么知道它失敗了呢随闽?怎么知道它為啥失敗哩父丰?來(lái)回翻了幾遍頭文件,確認(rèn)沒(méi)有其它的帶error的write方法掘宪,也沒(méi)有NSFilehandel的public屬性蛾扇。差點(diǎn)心灰意冷的時(shí)候,順手在Documentation里搜索下魏滚,果然镀首,在文檔里又這樣一段Discussion
這個(gè)方法是會(huì)拋異常的,寫(xiě)文件嘛鼠次,總是天有不測(cè)風(fēng)云更哄,誰(shuí)能保證一定成功芋齿。修改代碼如下:
果然給我抓到了exception。但是結(jié)果并不十分如意成翩,異常的描述除了一句Operated not permission也沒(méi)有其它有價(jià)值信息觅捆。
可以確定的是iPhone在鎖屏狀態(tài)下(Passcode opened)會(huì)有文件操作限制,測(cè)試內(nèi)容里sqlite和txt都是這樣捕传,可是在翻了好多文檔之后也并沒(méi)有找到關(guān)于這一點(diǎn)的有力說(shuō)明惠拭。這一點(diǎn)著實(shí)讓人遺憾扩劝,如果有哪位大神對(duì)此很清楚庸论,煩請(qǐng)告知一二,不勝感激棒呛。