Swift学习笔记——访问网络数据、NSURL、解析JSON

访问网络数据

今天用Swift完成了给定地址的邮编查询,代码如下:

Swift语言中,想要访问网络上的API,仍然需要调用ObjC中的一些内容,比如NSData。

NSData的构造函数在Xcode6.1中进行了更新,现在可以直接通过下面的语句获取网络数据(其中nsURL时NSURL格式的地址变量)

let resultNSData: NSData = NSData(contentsOfURL: nsURL)!

NSURL

NSURL是一个专门用来表示url网址的数据类型,在构造中,编译器会要求传入的字符串是utf-8格式的。因此,如果想要访问的网址中含有中文,必须要首先把unicode格式的中文字符,转换成utf-8代码。

似乎Swift的String类型并不自带这样的转换方法,这个转换过程仍然需要NSString的 stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) 方法来完成:

let nsURL: NSURL = NSURL(string: nsstrURL.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!

解析JSON

在NSData中得到了服务器返回的JSON数据后,需要对其进行解析才能输出。NSData自带了JSON的序列化方法,即NSJSONSerialization.JSONObjectWithData 方法。这个方法输出的数据可以保存到一个AnyObject 对象中,接下来的解析需要视数据结构而定了。这次的邮编查询返回的数据,在序列化后就已经可以通过下标进行访问。

但是这个自带的解析方法不是很便于使用,为了简化解析,可以使用一些第三方库,比如SwiftJSON

下面是用两种方式解析一个行政区划json文件的代码,显然前者繁复很多:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.