博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift学习第二练——Swift项目时光电影
阅读量:6476 次
发布时间:2019-06-23

本文共 2192 字,大约阅读时间需要 7 分钟。

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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源码地址:

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

转载地址:http://mpqko.baihongyu.com/

你可能感兴趣的文章
项目中的积累,及常见小问题
查看>>
Python类型转换、数值操作(收藏)
查看>>
oracle11g dataguard 安装手册(转)
查看>>
java并发包分析之———Deque和LinkedBlockingDeque
查看>>
1. Two Sum - Easy - Leetcode解题报告
查看>>
多线程---同步函数的锁是this(转载)
查看>>
鱼C记事本V1.0(下)- 零基础入门学习Delphi28
查看>>
百练 2742 统计字符数 解题报告
查看>>
Ubuntu搜狗输入法候选词乱码
查看>>
js中回调函数写法
查看>>
React native android 最常见的10个问题
查看>>
数据结构和算法
查看>>
.Net 项目代码风格要求
查看>>
[pat]1045 Favorite Color Stripe
查看>>
Immutable学习及 React 中的实践
查看>>
【转】性能测试步骤
查看>>
OSI与TCP/IP各层的结构与功能,都有哪些协议
查看>>
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>
值类型和引用类型
查看>>