這兩天剛學(xué)了點swift交汤,之前一直想把tableView理一下担扑,剛好有空恰响,順道一起來吧,為了自我學(xué)習(xí)同時回報社會涌献,這個就寫得基礎(chǔ)詳細些
1.創(chuàng)建
從下圖可知胚宦,這是一篇啰嗦的博客
基于啰嗦的初衷,全程代碼就不用Sb(storybord--故事板)拖控件了
為了搞清楚要干什么燕垃,先說說要干什么
1.我有個可以抓到數(shù)據(jù)的鏈接枢劝,這個鏈接里面有視頻等
2.點擊列表頁,進入播放卜壕,cell上有下載按鈕可以下載
3.暫時就上面兩點您旁,后面再補充吧,呵呵
刪除了storybord鹤盒、viewController蚕脏,注意要把info.plist中的main刪掉
接下來創(chuàng)建三個子類:
UINavigationController,UITableViewController,UIViewController
接下來就是配置window,與oc中差不多代碼
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow.init(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
let tbVC = TableViewController()
let naVC = NAVigationController.init(rootViewController: tbVC)
self.window?.rootViewController = naVC;
return true
}
看出來差別了么侦锯?驼鞭?少年?
此時已經(jīng)可以運行程序了尺碰,變白再變灰挣棕,似乎耗時略長,不知道是不是哪里寫的有問題??
2.配置tableViewController
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.translucent = false//底部是否允許存在cell
navigationController?.navigationBar.backgroundColor = UIColor.redColor()//此物位于導(dǎo)航欄底層
navigationItem.title = "連自己都感到害怕的男人"http://額??
let 題頭屬性 = [NSForegroundColorAttributeName:UIColor.whiteColor()]//白色字體葱蝗,其他屬性暫時沒研究好
navigationController?.navigationBar.titleTextAttributes = 題頭屬性
navigationController?.navigationBar.tintColor = UIColor.greenColor()//左右按鈕的顏色????
navigationController?.navigationBar.barTintColor = UIColor.redColor()//設(shè)置導(dǎo)航欄背景色????
}
總結(jié)下:
1.override 在繼承父類的函數(shù)前使用穴张,起聲明作用
2.Swift用?修飾值有可能為空的變量
3.let聲明常量
4.var聲明變量
5.函數(shù)/屬性 通過點語法調(diào)用
6.似乎推薦減少self的使用两曼,因此在不提示必須寫的情況下省略self
7.Bool類型只有兩種情況true/false 非0即真的情況不再適應(yīng)
8.差點忘了皂甘,Swift中類之間的調(diào)用無需引入頭文件(內(nèi)部集成PCH了?悼凑?偿枕?)
2.1 解析數(shù)據(jù),配置model類
第一步户辫,封裝數(shù)據(jù)請求渐夸,突然覺得好難,前文的小白步驟真是多余????
1.打開之前OC封裝的網(wǎng)絡(luò)請求類??參考
2.配置info.plist使其支持http請求
ok,配置結(jié)束
3.新建網(wǎng)絡(luò)請求類
原文鏈接 以及 GitHub鏈接
下面來理一下網(wǎng)絡(luò)請求:
網(wǎng)絡(luò)請求是經(jīng)常用到的操作墓塌,因此有必要封裝起來
網(wǎng)絡(luò)請求有GET和POST兩種,GET因為安全性差用的相對較少
1.首先將接口網(wǎng)址字符串轉(zhuǎn)化為NSURL類型奥额,創(chuàng)建并設(shè)置請求(超時時間)
let url = NSURL(string: 網(wǎng)址)
let request = NSMutableURLRequest(URL: url!)
request.timeoutInterval = 10
2.如果是POST請求需進一步配置請求(request)
為了數(shù)據(jù)安全苫幢,POST請求需要根據(jù)后臺提供的請求體字典,請求數(shù)據(jù)
“=”鏈接一個個鍵值對->xxx=yyy 然后將所有這些用&鏈接起來垫挨,模式如下
"key1=value1&key2=value2&........&keyn=valuen"
之后通過dataUsingEncoding(NSUTF8StringEncoding)方法轉(zhuǎn)化為進制流
request.HTTPBody = "key1=value1&key2=value2&........&keyn=valuen".dataUsingEncoding(NSUTF8StringEncoding)!//注意:此處需強解包韩肝。偽代碼
3.配置完成,接下來請求數(shù)據(jù)
根據(jù)請求創(chuàng)建并執(zhí)行Session請求任務(wù)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) -> Void in
if let 成功返回Data = data {
請求成功閉包(參數(shù): 成功返回Data)
}
if let 失敗返Error = error {
請求失敗閉包(參數(shù): 失敗返Error)
}
}
task.resume()
dataTaskWithRequest會內(nèi)部請求并通過閉包返回請求到的data九榔,response哀峻,error
解析該data可得到后臺提供的信息
let dic = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)
小結(jié):
1.Swift中可用漢字命名函數(shù)以及變量,在我的網(wǎng)絡(luò)請求封裝類可見(原文鏈接 )
2.可選綁定哲泊,即:if let a = 可選變量{ ..... }剩蟀。當可選變量不為空時,賦值并執(zhí)行語句塊
3.剛剛看到蘋果推出Swift Playground,意思是小孩兒用開發(fā)軟件切威,呵呵