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

Easter79
• 阅读 789

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)
}

项目部分截图:

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

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

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

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

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

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

专注技术,热爱生活,交流技术,也做朋友。

——珲少 QQ群:203317592

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Edith985 Edith985
3年前
Swift 简介
1.Swift开发快速体验1.1目标playground快速体验&学习资源分享项目开发快速体验,了解Swift基本程序结构1.2学习资源苹果官方博客https://developer.apple
Easter79 Easter79
3年前
swiftUi propertWrapper 自定义标记属性
上篇文章我们知道@Status 的作用了那么我们也可以自己定义类似的这种标签。。首先我们先来看下不使用属性标签,向导页面如何写////PropertyWrapperView.swift//learn_swiftUi////Createdbyliuanon2020/9/4.
Easter79 Easter79
3年前
Swift3.0对AFNetworking的封装 附demo
由于最新的Alamofire(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2FAlamofire%2FAlamofire)网络框架只支持Swift3.0,现在还有一大部分开发者在项目中用OC于Swift混编的方式,所以就用最新的Swift3.
Easter79 Easter79
3年前
Swift调用sha1算法
在Swift中通过调用OC的CommonCrypto库可以很方便的实现String字符串转换为sha1。在一个swift项目中,需要使用桥接头文件(Bridgingheader)的方式来引入一个OC库,才能调用OC中的内容。本文也将作为Swift项目中如何调用ObjectiveC代码的一个介绍。标准实现步骤1、新建一个Obje
Easter79 Easter79
3年前
Swift学习第一练——用Swift实现的FlappyBird小游戏
用Swift实现的FlappyBird小游戏   伴随着apple公司对swift的推广态度深入,swift火的很快,并且swift精简便捷的语法和强大的功能,对于使用Object—C开发iOS的开发者来说,也有必要了解学习一下swift。这篇博客跳过swift干涩的语法,直接从一个小游戏项目开始使用s
Easter79 Easter79
3年前
Swift专题讲解二十——扩展
Swift专题讲解二十——扩展一、简介      Swift中的扩展与ObjectiveC中的类别功能相似,扩展可以为一个已有的类、结构体、枚举或者协议添加新的属性或方法,与ObjectiveC的类别不同的是,Swift中的扩展没有名称。      Swift中的扩展支持如下功能:1.添加计
万字长文详解如何使用Swift提高代码质量 | 京东云技术团队
京喜APP最早在2019年引入了Swift,使用Swift完成了第一个订单模块的开发。之后一年多我们持续在团队/公司内部推广和普及Swift,目前Swift已经支撑了70%以上的业务。通过使用Swift提高了团队内同学的开发效率,同时也带来了质量的提升,目前来自Swift的Crash的占比不到1%。在这过程中不断的学习/实践,团队内的CodeReview,也对如何使用Swift来提高代码质量有更深的理解。
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k