Table of Contents
前言
- 該作品是2019年軟件工程課設(shè)作品,整體界面仿照貓眼電影App制作,其中電影列表與影院列表是直接調(diào)用的貓眼的api,安排的演出場(chǎng)次以及下訂單是合作的后臺(tái)小伙伴寫(xiě)的接口
- 由于是課設(shè)作品,項(xiàng)目中大量的運(yùn)用了各色第三方庫(kù),下面會(huì)一一放出,感謝開(kāi)源,不然一個(gè)選座我就得寫(xiě)兩周了
- 本次收獲最多的還是增加了和后臺(tái)對(duì)接的經(jīng)驗(yàn),中間踩了很多網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤的坑,在后面會(huì)放我對(duì)各種code報(bào)錯(cuò)的總結(jié)。另外學(xué)到最多的還是前后端對(duì)于數(shù)據(jù)類型不一樣導(dǎo)致的問(wèn)題(其實(shí)我也不是很懂,都是后臺(tái)大大牛逼)
- 另外就是對(duì)于常用的第三方庫(kù)越來(lái)越熟練了,JSONModel,Masonry,SDWebImage,AFNetworking(其實(shí)也就是那幾個(gè)方法。。。)
- 總的來(lái)說(shuō),這次收獲比我想的還是要大一點(diǎn),這兩周不到的時(shí)間能寫(xiě)完這樣一個(gè)看起來(lái)非常像樣的項(xiàng)目,很有成就感,比大二上的時(shí)候要老來(lái)呢多了
- 此外就是覺(jué)得很多時(shí)候UI部分用用網(wǎng)上開(kāi)源部分就很好了,沒(méi)必要浪費(fèi)太多時(shí)間,這次依然寫(xiě)了很多重復(fù)的代碼,大多是cell布局以及JSONModel解析,真的是又臭又長(zhǎng)
GitHub
- BGL-Cinema-System
- Demo前半部分關(guān)于熱映電影以及所有影院的部分可以正常使用(因?yàn)槭褂玫木褪秦堁鄣腶pi),剩下的登陸注冊(cè),選座下單部分由于是后臺(tái)小伙伴自己寫(xiě)的,所以URL全替換成了無(wú)效的
- 如果想看效果可以把網(wǎng)絡(luò)請(qǐng)求部分注釋掉,將tableview row改成死數(shù)據(jù),應(yīng)該就能行了
所有使用到的第三方庫(kù)
- 高仿貓眼電影APP框架,tabbar下navigationcontroller框架。
- selectSeat movie iOS objective-c(電影選座)
- 高仿貓眼電影選座(選票)模塊(High imitation opal film seat selection (vote) module)
- 為應(yīng)對(duì)類似淘寶首頁(yè),京東首頁(yè),國(guó)美首頁(yè)的復(fù)雜布局而寫(xiě)的多樣化的collectionview。
- 重量級(jí)城市選擇框架,類似美團(tuán)、貓眼電影、美團(tuán)外賣、百度外賣、百度糯米等團(tuán)購(gòu)類app城市選擇界面。
- Autoscroll Banner. 無(wú)限循環(huán)圖片、文字輪播器。
- JSONModel,Masonry,SDWebImage,AFNetworking四兄弟就不用說(shuō)了
- 本來(lái)還用了一個(gè)這個(gè)解決打印日志對(duì)于Unicode編碼不能正常顯示中文的問(wèn)題,只需要將文件導(dǎo)入工程,不需要引用,就能達(dá)到打印日志顯示Unicode編碼中文數(shù)據(jù),但是用的途中崩潰了,老哥也好久沒(méi)跟新了,提了issue也沒(méi)有用,所以后來(lái)刪了
項(xiàng)目詳細(xì)說(shuō)明
- 由于扯了很多第三方庫(kù),導(dǎo)致整個(gè)項(xiàng)目結(jié)構(gòu)無(wú)比混亂,除了最開(kāi)始的登陸注冊(cè)我還是老老實(shí)實(shí)按照MVC來(lái)寫(xiě)的,后面就開(kāi)始一個(gè)controller就完事了
- 所以這部分我會(huì)寫(xiě)清楚每個(gè)界面對(duì)應(yīng)ViewController是哪個(gè),至于配套的View和Model看一下頭部的#import就行
登陸注冊(cè)
登陸
預(yù)覽

38444807D07B1C68364B6C1C1AE378BE
文件名
BGLLoginViewController
注冊(cè)
預(yù)覽

2BAAF1C61A24F7889D671C89DF186558
文件名
BGLRegisterViewController.h
總結(jié)
- 登陸注冊(cè)是我唯一老老實(shí)實(shí)按照MVC寫(xiě)的,后面覺(jué)得太麻煩了就沒(méi)搞,一個(gè)大C是真的舒服
- 登陸注冊(cè)可以形成token,但是為了方便展示,并沒(méi)有使用,最后都是給某個(gè)用戶使用
- 沒(méi)加前端輸入判斷,說(shuō)實(shí)話,就是很粗糙的
城市定位
預(yù)覽

70B68A835B11B22E681E330DCA284F06
文件名
LocationViewController
總結(jié)
- 使用重量級(jí)城市選擇框架,類似美團(tuán)、貓眼電影、美團(tuán)外賣、百度外賣、百度糯米等團(tuán)購(gòu)類app城市選擇界面。
- 整個(gè)項(xiàng)目使用高仿貓眼電影APP框架,tabbar下navigationcontroller框架。作為UI架構(gòu),這里有遇到nav的leftitembutton設(shè)置title的問(wèn)題,最后是每次選擇城市后都再次新建button
選擇電影
預(yù)覽

E05DD87FA222B7DCE91F1C539AFF9AED
文件名
MovieFirstViewController
總結(jié)
- 使用Autoscroll Banner. 無(wú)限循環(huán)圖片、文字輪播器。寫(xiě)最頂上的輪播圖
- 這里開(kāi)始用到了大量的自定義TableViewCell,應(yīng)該做到著就想好怎樣封裝
選擇影院
預(yù)覽

6C8351C52F7FD4E4860AE5DFFA0BD98D
文件名
MovieSecondViewController
查看我的訂單
預(yù)覽

E8418E0D2A3082894F6B59DCD0E021EC
文件名
MineViewController
選擇場(chǎng)次
預(yù)覽

D2C1A4F5-4E7A-46F3-8468-633CC26F5F52
文件名
ChooseSessionViewController
總結(jié)
- 使用淘寶電影(淘票票)影院電影瀏覽效果寫(xiě)了影院圖片那一塊,還挺酷的
選座
預(yù)覽

86AF0F2A-C4C0-441C-9E3B-97687AF34322
文件名
SMViewController
總結(jié)
- 使用selectSeat movie iOS objective-c(電影選座),改了幾個(gè)接口,最后使用遍歷dictSeatState,將value為2的key也就是KyoCinameSeatStateSelected的傳出key以及在value數(shù)組中的序號(hào),即座位號(hào)了
- 這一步的時(shí)候?qū)τ谧值涞慕馕龈盍艘恍?,字典還是好用啊
遇到的問(wèn)題
code = xxx
- 使用AFN遇到了很多code=xxx的問(wèn)題,寫(xiě)了一篇總結(jié)博客
- iOS與后臺(tái)對(duì)接時(shí)使用AFN會(huì)遇到的各種問(wèn)題
數(shù)據(jù)傳不過(guò)去
- 在下訂單界面需要傳一個(gè)座位數(shù)組,當(dāng)時(shí)要以JSON數(shù)據(jù)的形式發(fā)出去
- 首先是看著篇OC轉(zhuǎn)JSONJSON與OC互相轉(zhuǎn)換
- 然后發(fā)現(xiàn)使用AFN怎么都不對(duì),后臺(tái)要么就是連訪問(wèn)都沒(méi)訪問(wèn)到,要么就是拿到的數(shù)據(jù)都是NULL最后從網(wǎng)上找到這篇文章iOS客戶端發(fā)送json數(shù)據(jù),java(servlet)服務(wù)器接受json數(shù)據(jù)
- 但是之后又出現(xiàn)安全證書(shū)的問(wèn)題code = -1202,靠這個(gè)解決了Error Domain=NSURLErrorDomain Code=-1202,Https服務(wù)器證書(shū)無(wú)效
遺憾
- 課設(shè)作品按照道理應(yīng)該也沒(méi)啥遺憾不遺憾的,本質(zhì)上就是個(gè)各色第三方庫(kù)的堆砌,但還是有點(diǎn)小遺憾,寫(xiě)下來(lái)希望下次改正
- 測(cè)試后臺(tái)接口的時(shí)候,經(jīng)常要在局域網(wǎng)和公網(wǎng)上切換,導(dǎo)致請(qǐng)求的鏈接一直要變,其實(shí)應(yīng)該寫(xiě)一個(gè)宏定義來(lái)寫(xiě)鏈接,一改全部都改了;同時(shí)這樣在最后上傳GitHub的時(shí)候還可以把該宏定義改成亂碼,防止后臺(tái)接口暴露
- 由于是課設(shè)作品,沒(méi)怎么追求美觀,沒(méi)放任何動(dòng)畫(huà)上去,有點(diǎn)遺憾
- 寫(xiě)了好多好多自定義cell文件,沒(méi)有用枚舉寫(xiě)成可選類型,但是我對(duì)于封裝cell后數(shù)據(jù)應(yīng)該怎樣更新還有點(diǎn)想不通
- 城市定位雖然有,但沒(méi)有用到,如果還要對(duì)城市有選擇的話,顯然對(duì)后臺(tái)壓力有點(diǎn)大
- 登陸注冊(cè)部分其實(shí)我在前端沒(méi)有做任何判斷,別說(shuō)重復(fù)密碼有沒(méi)有輸對(duì)了,就是沒(méi)寫(xiě)重復(fù)密碼都沒(méi)事
- 選座部分其實(shí)第一列的座位選不了。。。
- 本來(lái)設(shè)想的其實(shí)是我在下單成功后,生成一個(gè)二維碼,用戶可以掃一掃返還,算是下單成功??墒呛笈_(tái)反應(yīng),單純掃一掃無(wú)法發(fā)送請(qǐng)求確認(rèn)訂單已支付,so,gg