/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)>