Swift学习第二练——Swift项目时光电影
很早以前的一个OC的练习项目,用swift重新写了一遍,因为xcode版本的更新对swift的兼容度也在不断改变,此版本适用于xcode6.1。
这个项目中,用swift将iOS官方SDK中的HTTP进行了封装,使用了swift编写的异步加载网络图片的方法。练习了用swift操作界面布局,跳转界面等的方法。
下面是封装的下载类的核心代码:
1private var httpConnection:NSURLConnection? 2class ZYHHttpRequset: NSObject,NSURLConnectionDataDelegate{ 3 var requestUrl:String? 4 var downloadData:NSMutableData=NSMutableData() 5 var isDownloadSuccess:Bool? 6 var delegate:ZYHHttpRequestDelegate? 7 class func requestFormUrl(url:NSString)->ZYHHttpRequset{ 8 var oldRequest:ZYHHttpRequset?=ZYHHttpRequestManager.sharedHttpRequestManager().requestForKey(url) 9 if (oldRequest != nil){ 10 println("该任务存在") 11 return oldRequest! 12 } 13 //新建下载任务 14 var request:ZYHHttpRequset=ZYHHttpRequset() 15 request.requestUrl=url 16 request.startRequestUrl(url) 17 ZYHHttpRequestManager.sharedHttpRequestManager().addTask(request, key: url) 18 return request 19 } 20 21 func stop(){ 22 if httpConnection != nil { 23 httpConnection?.cancel() 24 httpConnection = nil 25 } 26 } 27 28 //开始下载请求 29 private func startRequestUrl(url:NSString){ 30 if httpConnection != nil { 31 httpConnection!.cancel() 32 httpConnection==nil 33 } 34 //创建连接对象 35 var request=NSURLRequest(URL: NSURL(string: url)!) 36 httpConnection=NSURLConnection(request: request, delegate: self) 37 38 } 39 //重写协议中的方法 40 func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) { 41 downloadData.length=0 42 } 43 func connection(connection: NSURLConnection, didReceiveData data: NSData) { 44 downloadData.appendData(data) 45 } 46 func connectionDidFinishLoading(connection: NSURLConnection) { 47 isDownloadSuccess = true 48 delegate!.ZYHHttpRequestSuccsee(self) 49 ZYHHttpRequestManager.sharedHttpRequestManager().removeTaskFromUrl(self.requestUrl!) 50 } 51 func connection(connection: NSURLConnection, didFailWithError error: NSError) { 52 println("加载失败") 53 println(error) 54 self.isDownloadSuccess=false 55 ZYHHttpRequestManager.sharedHttpRequestManager().removeTaskFromUrl(self.requestUrl!) 56 } 57 58 59 60 61} 62protocol ZYHHttpRequestDelegate{ 63 func ZYHHttpRequestSuccsee(request:ZYHHttpRequset) 64}
项目部分截图:




github源码地址:https://github.com/ZYHshao/SwiftMovie
其中错误之处,欢迎指教,希望在交流中,不断进步!
专注技术,热爱生活,交流技术,也做朋友。
——珲少 QQ群:203317592