NSURL转NSString 的路径与 从沙盒获取的路径的区别

真机测试

第一种: NSURL->NSString 通过.absoluteString 得到下面的

file:///var/mobile/Containers/Data/Application/8306F70B-676A-4F71-8E97-81729536348B/Library/Caches/MusicCrop/20180403145307.caf

第二种: 直接从沙盒获取的路径是下面这样的

/var/mobile/Containers/Data/Application/8306F70B-676A-4F71-8E97-81729536348B/Library/Caches/MusicCrop/20180403145307.caf

有什么区别?

对于访问文件而言,这两种方法都可以。

但是在使用的时候

第一种要用[NSURL URLWithString:@""];

第二种要用[NSURL fileURLWithPath:@""];

第一种加 file://,这是URL协议的规范!不然无法在计算机的海洋里标识一种【资源】

http://en.wikipedia.org/wiki/URI_scheme

第二种是通过 NSFileManager 去访问文件的,NSFileManager内部会把路径转成URL协议。


如果是一个合法的NSURL对象,它里面封装的请求的url字符串是必须要指定访问协议的。如你去请求一个http协议的url需要指明它的协议才能正确返回NSURL对象,否则返回nil, 例如下面:

NSURL*httpURL = [NSURL URLWithString:@"http://www.baidu.com"];

/////拨打电话

NSURL*telURL = [NSURL URLWithString:@"tel://1111"];

/////你甚至可以自己自定义URL协议

NSURL*myURL = [NSURL URLWithString:@"myApp://xxxxx"];

你可能感兴趣的:(NSURL转NSString 的路径与 从沙盒获取的路径的区别)