dataWithContentsOfURL:失效??

/private/var/mobile/Containers/Data/Application/路徑下的圖片,無法通過[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:_imageUrl]]]得到圖片,然而[UIImage imageWithContentsOfFile:_imageUrl]就可以

(lldb) po _imageUrl
/private/var/mobile/Containers/Data/Application/E62F5EC0-5752-44A6-807D-85730189832E/tmp/ReactNative/ED8D8130-2C91-4A26-9CFC-57BFF0E2BF62.jpg

(lldb) po [NSData dataWithContentsOfURL:[NSURL URLWithString:_imageUrl]]
2023-01-03 12:36:38.518437+0800 MyApp[4267:3025225] NSURLConnection finished with error - code -1002
 nil
 
(lldb) po [NSData dataWithContentsOfFile:_imageUrl]
  po [NSData dataWithContentsOfFile:_imageUrl]
<ffd8ffe0 00104a46 49460001 01000090 00900000 ffe10080 45786966 00004d4d 002a0000 00080005 01120003 00000001 
...

搜到 iOS:關(guān)于沙盒路徑,緩存/視頻,存儲規(guī)則和使用

原來 沙盒路徑盡量用 fileURLWithPath:, 別用URLWithString:

po [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:_imageUrl]]
<ffd8ffe0 00104a46 49460001 01000090 00900000 ffe10080 45786966 00004d4d 002a0000 00080005 01120003 00000001 00010000 011a0005 00000001 0000004a 011b0005 00000001 00000052 01280003 00000001 00020000 87690004 00000001 0000005a 00000000 00000090 00000001 00000090 00000001 0002a002 00040000 00010000 0280a003 00040000 00010000 0eb30000 0

對比 fileURLWithPath:、URLWithString:

(lldb) po _imageUrl
/private/var/mobile/Containers/Data/Application/E62F5EC0-5752-44A6-807D-85730189832E/tmp/ReactNative/ED8D8130-2C91-4A26-9CFC-57BFF0E2BF62.jpg

(lldb) po [NSURL fileURLWithPath:_imageUrl]
file:///private/var/mobile/Containers/Data/Application/E62F5EC0-5752-44A6-807D-85730189832E/tmp/ReactNative/ED8D8130-2C91-4A26-9CFC-57BFF0E2BF62.jpg


(lldb) po [NSURL URLWithString:_imageUrl]
/private/var/mobile/Containers/Data/Application/E62F5EC0-5752-44A6-807D-85730189832E/tmp/ReactNative/ED8D8130-2C91-4A26- ... BF62.jpg

(lldb) po [NSURL URLWithString:_imageUrl].absoluteString
/private/var/mobile/Containers/Data/Application/E62F5EC0-5752-44A6-807D-85730189832E/tmp/ReactNative/ED8D8130-2C91-4A26-9CFC-57BFF0E2BF62.jpg
  • 沙盒路徑 轉(zhuǎn)url,使用fileURLWithPath 會生成協(xié)議頭file://,最終正常得到image。而URLWithString則最終獲取image位null

  • 網(wǎng)絡(luò)鏈接 轉(zhuǎn)url,則反之
    使用fileURLWithPath 則不合理了,也無法正常得到image,使用URLWithString才OK

(lldb) po [NSURL fileURLWithPath:@"https://profile.csdnimg.cn/C/4/8/1_wustzhy2016"]
https:/profile.csdnimg.cn/C/4/8/1_wustzhy2016 -- file:///

(lldb) po [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:@"https://profile.csdnimg.cn/C/4/8/1_wustzhy2016"]]]
 nil

(lldb) po [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://profile.csdnimg.cn/C/4/8/1_wustzhy2016"]]]
<UIImage:0x2805b07e0 anonymous {150, 150} renderingMode=automatic(original)>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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