iOS :獲取沙盒里的圖片為空,通過[NSData dataWithContentsOfFile:newstr]和initWithContentsOfFile原因

有時(shí)我們會(huì)將圖片進(jìn)行存儲(chǔ),儲(chǔ)存到沙盒路徑下面,等我們用到的時(shí)候再去讀取。

讀取的時(shí)候一般有兩個(gè)方法

NSData *imageData = [NSData dataWithContentsOfFile:@"路徑"];

UIImage* image = [[UIImage alloc] initWithData:imageData];

還有一個(gè)

NSString *aPath3=[NSString stringWithFormat:@"%@/Documents/%@.jpg",NSHomeDirectory(),@"test"];

UIImage *imgFromUrl3=[[UIImage alloc]initWithContentsOfFile:aPath3];

但是有時(shí)候這兩個(gè)方法獲取不到對(duì)應(yīng)的圖片,網(wǎng)上有人說了好多的方案,但是并沒有解決問題。后來看了一個(gè)國(guó)外的帖子,解決了問題

當(dāng)我們存儲(chǔ)的時(shí)候,我們不光要存儲(chǔ)圖片也要將圖片的存在的沙盒路徑存儲(chǔ)下來,下次再用這個(gè)沙盒路徑讀取出來就可以了,好多人都這么去讀取,結(jié)果發(fā)現(xiàn)圖片獲取不到。

其實(shí)不是代碼有問題,而是路徑有問題,當(dāng)我們不重啟APP的時(shí)候沙盒路徑保持不變,但是當(dāng)我們重啟APP的時(shí)候,APP的沙盒了路徑已經(jīng)發(fā)生了變化,沙盒路徑有一段路徑是變化的每當(dāng)重啟一次APP就會(huì)發(fā)生變化

而我們存儲(chǔ)的路徑確實(shí)第一次的路徑,再次打開的時(shí)候,獲取到圖片當(dāng)然不可能,取到了可能才出現(xiàn)了問題。

那我們應(yīng)該怎么解決呢

既然沙盒路徑是變化的,那我們就不要存儲(chǔ)的變化的就可以了,我們只需要存儲(chǔ)的沙盒路徑后面的內(nèi)容就可以了,當(dāng)我們存儲(chǔ)圖片到沙盒路徑的時(shí)候,都會(huì)給圖片一個(gè)唯一的名字,去個(gè)例子:沙盒路徑 + 20180601090303.png,我們只要需要存儲(chǔ)20180601090303.png這部分就可以了。

但我們讀取的時(shí)候只需要,將沙盒路徑拼接上這存儲(chǔ)的唯一名字就可以獲取到了。雖然沙盒每次改變,但是我們的圖片位置還在那里,我們動(dòng)態(tài)獲取沙盒路徑加圖片唯一名字就一定是可以找到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容