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)

}

项目部分截图:

image.png

image.png

目录
相关文章
|
7月前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
|
7月前
|
Swift
swift相关项目包含私有库引起的Undefined symbols for architecture arm64
swift相关项目包含私有库引起的Undefined symbols for architecture arm64
100 0
|
7月前
|
IDE 开发工具 Swift
创建一个Swift项目
创建一个Swift项目
124 1
|
Web App开发 搜索推荐 Linux
20 年的 Debian 开发者被排挤出项目;操作系统 “火龙” 被质疑抄袭;Swift 5.6 发布 | 思否周刊
20 年的 Debian 开发者被排挤出项目;操作系统 “火龙” 被质疑抄袭;Swift 5.6 发布 | 思否周刊
217 0
|
开发工具 Swift iOS开发
iOS 问题 1: OC项目导入swift三方库不兼容问题
iOS 问题 1: OC项目导入swift三方库不兼容问题
1135 0
iOS 问题 1: OC项目导入swift三方库不兼容问题
|
前端开发 测试技术 Swift
Swift学习笔记——新建项目
在xcode菜单中选择 new -> project -> single view app 点击next在弹出窗中填写项目名称 这里languge有可以选择object-c或swift作为项目语言。这里我们学习swift,所以选择swift。 如果language选择swift,下面的user interface可以选择swiftUI和storyboard。 SwiftUI是2019 年 WWDC 大会上,苹果在压轴环节向大众宣布了基于 Swift 语言构建的全新 UI 框架,与flutter类似,是用代码编写页面,支持快速预览。
732 0
|
Swift
(一)swift的基本学习
(一)swift的基本学习
184 0
|
Swift 开发者 iOS开发
Swift学习第一练——用Swift实现的FlappyBird小游戏
Swift学习第一练——用Swift实现的FlappyBird小游戏
200 0
Swift学习第一练——用Swift实现的FlappyBird小游戏
|
SQL 数据库 数据库管理
Swift学习第九枪之SQLite的使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51570242 前面写了一部分关于Swift的语法学习,今天要学习的是关于IOS中数据存储的一种存储方式之SQLite的使用。
877 0
|
存储 算法 Swift
Swift学习第七枪--协议(一)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51553279 协议(Protocols) 协议 定义了一个蓝图,规定了用来实现某一特定工作或者功能所必需的方法和属性。
672 0