
上QQ阅读APP看书,第一时间看更新
4.8 NSURL类
NSURL类提供在应用中使用URL地址的相关方法。例如,给出链接到互联网上的一个文件路径的地址,然后调用其他类的方法就可以读取到这些文件的内容。另外,在Foundation框架中,有很多方法都是使用NSURL对象作为参数的。
1.创建NSURL对象
虽然大家看到的网络地址是以字符串形式展示的,但NSURL对象并不是一个字符串,例如@“http://www.99ios.com”。在NSURL类中提供了URLWithString:方法,可以把一个字符串转化成为一个NSURL对象。除此之外,还可以使用initWithString:方法。代码如下所示。

2.获取输出
由于NSURL对象保存的是一个地址,因此可以获取NSURL对象对应链接中存储的内容,NSURL对象通常作为方法的参数存在。在Foundation框架中,NSString类、NSArray类、NSDictionary类以及NSData类等,都有一些方法可以获取某个NSURL对象对应的内容。
- 根据NSURL存储的地址,获取NSString类的对象。

在示例代码中,创建一个NSURL对象,并且指向一个网络地址,通过调用NSString类的stringWith-ContentsOfURL:encoding:error:可以获取NSURL对象指向地址中存储的数据,并转换成字符串形式。如下所示,得到的结果是该网址的html源码。

运行结果如图4-33所示。

图4-33 运行结果
- 获取NSData类的输出内容。例如可以通过网址获取一张图片的二进制数据,然后再转换成UIImage对象。

下方的示例代码中,访问同样的NSURL对象,但返回NSData类的对象,通过打印出的日志可以看到,返回的内容是以编码形式存储的。

运行结果如图4-34所示。

图4-34 运行结果