专栏首页一“技”之长Swift学习第二练——Swift项目时光电影

Swift学习第二练——Swift项目时光电影

Swift学习第二练——Swift项目时光电影

    很早以前的一个OC的练习项目,用swift重新写了一遍,因为xcode版本的更新对swift的兼容度也在不断改变,此版本适用于xcode6.1。

    这个项目中,用swift将iOS官方SDK中的HTTP进行了封装,使用了swift编写的异步加载网络图片的方法。练习了用swift操作界面布局,跳转界面等的方法。

    下面是封装的下载类的核心代码:

private var httpConnection:NSURLConnection?
class ZYHHttpRequset: NSObject,NSURLConnectionDataDelegate{
    var requestUrl:String?
    var downloadData:NSMutableData=NSMutableData()
    var isDownloadSuccess:Bool?
    var delegate:ZYHHttpRequestDelegate?
    class func requestFormUrl(url:NSString)->ZYHHttpRequset{
        var oldRequest:ZYHHttpRequset?=ZYHHttpRequestManager.sharedHttpRequestManager().requestForKey(url)
        if (oldRequest != nil){
            println("该任务存在")
            return oldRequest!
        }
        //新建下载任务
        var request:ZYHHttpRequset=ZYHHttpRequset()
        request.requestUrl=url
        request.startRequestUrl(url)
        ZYHHttpRequestManager.sharedHttpRequestManager().addTask(request, key: url)
        return request
    }
    
    func stop(){
        if httpConnection != nil {
            httpConnection?.cancel()
            httpConnection = nil
        }
    }
    
    //开始下载请求
    private func startRequestUrl(url:NSString){
        if httpConnection != nil {
            httpConnection!.cancel()
            httpConnection==nil
        }
        //创建连接对象
        var request=NSURLRequest(URL: NSURL(string: url)!)
        httpConnection=NSURLConnection(request: request, delegate: self)
        
    }
    //重写协议中的方法
    func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) {
        downloadData.length=0
    }
    func connection(connection: NSURLConnection, didReceiveData data: NSData) {
        downloadData.appendData(data)
    }
    func connectionDidFinishLoading(connection: NSURLConnection) {
        isDownloadSuccess = true
        delegate!.ZYHHttpRequestSuccsee(self)
        ZYHHttpRequestManager.sharedHttpRequestManager().removeTaskFromUrl(self.requestUrl!)
    }
    func connection(connection: NSURLConnection, didFailWithError error: NSError) {
        println("加载失败")
        println(error)
        self.isDownloadSuccess=false
        ZYHHttpRequestManager.sharedHttpRequestManager().removeTaskFromUrl(self.requestUrl!)
    }
    
    
    
    
}
protocol ZYHHttpRequestDelegate{
    func ZYHHttpRequestSuccsee(request:ZYHHttpRequset)
}

项目部分截图:

github源码地址:https://github.com/ZYHshao/SwiftMovie

其中错误之处,欢迎指教,希望在交流中,不断进步!

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS传感器开发——加速度传感器,螺旋仪传感器,磁力传感器的应用

            通过加速度传感器,螺旋仪传感器和磁力传感,我们可以获取到手机在当前三维空间中的形态,加速度传感器也被称作重力感应。在一些赛车游戏中可以广泛得到应...

    珲少
  • iOS应用内跳转系统设置相关界面的方法 原

            在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等。在iOS6之后,第三方应用需要...

    珲少
  • iOS开发之CoreMotion框架的应用 原

          我们知道,现在智能手机手机的功能已经越来越强大。小小的手机中集成了众多的传感器配件。通过这些传感器可以获取到手机甚至用户的状态信息。

    珲少
  • 监控微信小程序wx.request请求失败

    在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求。其重要性不言而喻。然而,却经常遇到请求失败的问题,笔者...

    Fundebug
  • 堆排序&&动态中位数

    heapify():  这里是指最大heapify。 我们只需要从  k = N / 2开始,  在k >= 1的条件下对 k 进行shiftDown(), 然...

    大学里的混子
  • Linux PHP 7 环境下安装 Swoole

    由于 Swoole 已经收录到 PHP 官方扩展库,可以使用 pecl 命令安装 Swoole 扩展

    柳公子
  • 顺序存储线性表的实现

    最近复习数据结构,写了一个顺序存储的线性表,代码粘在这里:) 代码下载:git@github.com:Wang-Sen/algorithm.git /* * ...

    用户1214695
  • 【SLAM】开源 |Active Neural SLAM:模块化和层次化的方法学习探索3D环境,CVPR 2019 获奖作品

    在本文中提出了一种模块化和层次化的方法来学习探索3D环境的策略,称为Active Neural SLAM。本文方法通过learned SLAM模块, 和glob...

    CNNer
  • 在Ubuntu 18.04上安装WordPress

    WordPress是一个非常流行的专注于博客的动态内容管理系统(CMS)。WordPress可以部署在LAMP或LEMP堆栈上。它具有的可扩展插件框架和主题系统...

    eru
  • Python---获取div标签中的文字

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

    明天依旧可好

扫码关注云+社区

领取腾讯云代金券