天氣步驟
一.在里面申請key , 分析視圖,有三個視圖
界面 + 業務邏輯層 + 模型層 (View + Controller + Model)
1.頭部視圖(5個控件 cityLabel、hiloLabel? temperatureLabel、iconView、conditionsLabel(天氣描述)
2.每小時的天氣情況
3.每天的天氣情況
二、創建最表面的tableView ,通過三問一答,有些比如說行數,內容確定,暫且用#warning TODO
三、創建頭部視圖—>創建Views組——》創建headview? —-創建4個Label+imageview—-》在m 文件中重寫父類的initWithFrame方法(如果是init ,必須調用父類的frame)—->定義一些常量 static—>設置frame、字體...? ? —》label封裝 (或者創建分類、labelTool創建工具類 )
四、分類(封裝)? 創建Utility 組—>選擇Object-C? ,File? Type 選擇分類, Class—》UILabel? 給定label 的frame? ,返回創建好的UIlabel? 用類方法 ?? ? 1 創建citilabel和最高和最低溫度label? 添加另外的三個? label? ? ? —》設置在頭部視圖
五、發送請求 JSON? 格式
1.NSURLSession
a. 單例對象
b. 任務的類型 NSURLSessionDataTask
獲取服務器的json 格式 (解析/模型類) 在主視圖viewdidload
創建NSURLRequest對象
獲取單例對象NSURLSession
創建數據任務對象,發送請求
創建模型類 (頭部視圖、每小時天氣、每天天氣)但是有共同點,所有只創建一個模型類
手動執行任務
六.創建模型類model組—>Nsobject,只負責數據解析和提供接口
json? “”, 沒有“”就是NSNumber ,用NS如果就是NSString? 創建各個屬性
每小時/每天的用數組接收? 在TRWeatherModel,時在model 中提供一個方法這樣跳轉? 類方法——》類方法+? return一個實例方法
七、到主視圖中TRMainViewController? ? 解析的地方? ,用for? in 解析,聲明可變數組,進行存儲? ——》成功返回解析的數據(三目運算符)—》驗證斷點108? 110
code是200
在控制臺輸入斷點后進一步,再po? self .hourlyArray .count
completionHandler(想再子線程還是主線程中)--在子線程中———》填空
-行數? ? —設置cell一些屬性—》多高? 斷點驗證
八、圖片緩存? 在controller 中
在主視圖控制器,在三問一答? 一答那里,如果不是第一行時,圖片的緩存—設置每個cell 的圖片? 出現卡的解決方案 幾種方法在V3? ? 一般都是用第三方庫,進行圖片緩存
圖片加載 出現的問題
1.卡
2.第一次加載沒有圖片顯示
3.每次調用cellForIndexPath, 都會重復下載圖片
4.問題四:內存增大
圖片緩存的邏輯的替代方案 第三方庫 (SDWebImage)
另外對MVC的總結
1.感覺主要在Controllerview 層做包括數據(JSON)的解析,數據的處理,圖片的緩存,圖片的URL
2.在model 層只是在JSON格式做分出和做解析數據的接口
3.View層做了視圖的顯示,同時提供已改工具類Unity ,進行封裝視圖
對天氣的總結,當然還可以提供定位服務,以及給視圖添加新的icon 圖像。
如感興趣可以聯系875666040,進行解答