使用api來客制自已想要資訊
利用彼得潘小王子剛教完的api用法來做的綀習,選得是政府的流浪動物資訊其實做到一半在查找資料時才發現似乎有學長做過一樣的東西,頓時壓力山大呀!要再從找又覺得浪費時間,於是硬著頭皮做下去了,本次目標使用api資料,也順便綀習使用CollectionView,先秀完成的結果吧!
這次api解析的用法感覺難度不是很難,難的點可能是型別設置上要注意,如果沒用一些高手提供型別偵辦器的話,真的要很小心,我也在這個地方卡很久,之後才想起老師用do catch的方法才成功知道問題出在哪
在上圖的album_file我曾經以為它會是url於是我得到解析失敗的情況,修正為string後才成功的解析這些資料,於是可以開始我的collection了。
這次我選用collection view controller因為cell 和delegate都幫我弄好,這樣方便我不用都對不起我父母,然後再加了navigation後就開始加對應的collectionViewController.swift和CollectionViewCell.swift 對應的id也先設好,其它的設置就跟tableview差不多,然後將collection的layout做個outlet
設置好後再用一個fullScreenSize的變數來取得本機畫面大小就能開始設置自已的cell的屬性了
然後設置完了,api資訊也接著了,我希望能在點選cell時能將值傳給下一頁來顯示更完整的資訊,就利用開局送的ViewController來接值,這時後的prepare遇到一點問題,collection沒有indexPathForSelectedRow呀!我怎麼找它點選時的indexpath呀!三更半夜的怎麼辦呀!還好google大神無所不知,用sender轉型成UICollectionViewCell再帶回去indexPath,就能得能點選cell時對應的row了!
感動的一刻!完成了! 那再加一個分類的畫面吧。
這個我希望是進來的首頁一開始就能知道有哪幾種動物可以選擇(喂!這是愛心認養,不是寵物店呀),好的!這api資料很多我也沒看完,會有幾種動物我也不清楚,所以我打算在讀取資料放在這一頁,接著用資料內的animal_kind來決定分類,然後點選對應的kind來進入只有這種類型的照片牆
所以理所當然的還是用collection,麻煩點一開始就來了,我該怎麼知道會有多少的種類? 後來決定用set的唯一性來克服這點,然後再把set丟進array方便自已控制。
接著就好處理了,用這array來設置需要產生幾個cell,但是cell的設置還是以能對應到屬於自已的資訊會比較好,所以我給一個image和lable對應該的是同kind的資料,嗯!決定了!就是你啦! 去吧~for in 給我跑起來!
直接比對同樣的kind以及有照片的物件取得image,然後再設置進去cell,如果真的都沒圖,就用我最愛的爛爛來頂上。
然後點選的kind 再做一下for in把同物種的動物丟進一個新的array傳值給下一頁!完成! 接著再來挑戰search bar吧!
好吧!凌晨2點了,還沒研究出來!等之後別綀習再來加了!
這是我的github連結