iOS項(xiàng)目開發(fā)MVVM架構(gòu)實(shí)踐(第三篇:應(yīng)用布局)

有了前面兩篇的基礎(chǔ)宏浩,我們通過(guò)具體的例子來(lái)說(shuō)明這個(gè)架構(gòu)是怎么布局的知残,然后我們一步步的實(shí)現(xiàn)它們。接下來(lái)绘闷,我們一大家熟悉的用戶登錄來(lái)做介紹橡庞,比如我們有這樣的一個(gè)登錄界面,下圖:

login

需求有较坛,那就讓我們動(dòng)手去實(shí)現(xiàn)它的整個(gè)流程:

第一步:用xcode打我們的項(xiàng)目印蔗,新建一個(gè)framework(File->New->Target->Cocoa Touch Framework),命名為Services,導(dǎo)入NetworkAPI的framework以及其他用使用的第三方framework,首先,先定義login接口的Router,如下:

AccountRouter.swift

接著丑勤,實(shí)現(xiàn)登錄的service方法华嘹,新建一個(gè)AccountServices的文件,具體如下:

AccountServices.swift

由于法竞,我們需要把用登錄數(shù)據(jù)本地化耙厚,這邊使用sugarrecord(具體使用查看GitHub)來(lái)簡(jiǎn)化coredata數(shù)據(jù)的存儲(chǔ),User(Model,跟建services framework的方式一樣)的定義如下:

User.swift

同時(shí)岔霸,使用了ObjectMapper把JSON轉(zhuǎn)化為Model(User),具體使用方法這邊就不做介紹薛躬,請(qǐng)查看GitHub文檔。

第二步呆细,從第一步我們實(shí)現(xiàn)這個(gè)架構(gòu)的Services層和Model層型宝,接下來(lái)我們要實(shí)現(xiàn)就是為View層提供可監(jiān)聽的屬性(Property)與可執(zhí)行的動(dòng)作(Action)的ViewModel層,跟前面類似新建一個(gè)ViewModel的framework絮爷,具體如下:

ViewModelBase.swift
LoginViewModel.swift

主要有兩個(gè)文件趴酣,分別為ViewModelBase.Swift和LoginViewModel.swift,我們整個(gè)用戶登錄邏輯到這邊基本都實(shí)現(xiàn)了,就差怎么運(yùn)用View層坑夯,由于岖寞,整個(gè)登錄界面是用代碼寫的,使用到UITableView, 用戶輸入的值是通過(guò)delegate傳出來(lái)的柜蜈,所以這邊使用Action傳入輸入?yún)?shù)的方式實(shí)現(xiàn)仗谆,如果使用storyboard畫界面的,可以考慮屬性綁定的方式淑履,ViewModel的就應(yīng)該這么寫了隶垮,如下:

LoginViewModel.swift

綁定,其實(shí)很簡(jiǎn)單鳖谈,類似如下圖所示:

Property綁定
Action綁定

最后一步岁疼,也就是View層,不管是用代碼寫的界面,還是storyboard畫的界面捷绒,上面的兩種ViewModel的實(shí)現(xiàn)都可以用瑰排,主要看那種使用其他比較方便,要做的事情比較就好了暖侨。我這邊運(yùn)用的是第一種椭住,是由于比較適合我運(yùn)用場(chǎng)景,大致的代碼如下:

取到name和pwd
執(zhí)行action

到此字逗,整個(gè)架構(gòu)的布局就完成了京郑,大致可以歸為:Model -> Services -> ViewModel -> View,我們這邊在Model與ViewModel之間插入一個(gè)Services層,主要是為了分離調(diào)用API邏輯實(shí)現(xiàn)的部分葫掉,減少ViewModel的負(fù)擔(dān)些举,讓其看起來(lái)比較輕量級(jí)。

就到此了俭厚!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末户魏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挪挤,更是在濱河造成了極大的恐慌叼丑,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛门,死亡現(xiàn)場(chǎng)離奇詭異鸠信,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)论寨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門星立,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人政基,你說(shuō)我怎么就攤上這事贞铣。” “怎么了沮明?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵辕坝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荐健,道長(zhǎng)酱畅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任江场,我火速辦了婚禮纺酸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘址否。我一直安慰自己餐蔬,他們只是感情好碎紊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著樊诺,像睡著了一般仗考。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上词爬,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天秃嗜,我揣著相機(jī)與錄音,去河邊找鬼顿膨。 笑死锅锨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恋沃。 我是一名探鬼主播必搞,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芽唇!你這毒婦竟也來(lái)了顾画?” 一聲冷哼從身側(cè)響起取劫,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤匆笤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谱邪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炮捧,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年惦银,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咆课。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扯俱,死狀恐怖书蚪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迅栅,我是刑警寧澤殊校,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站读存,受9級(jí)特大地震影響为流,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜让簿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一敬察、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尔当,春花似錦莲祸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藤抡。三九已至,卻和暖如春抹估,著一層夾襖步出監(jiān)牢的瞬間缠黍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工药蜻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓷式,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓语泽,卻偏偏與公主長(zhǎng)得像贸典,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踱卵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,334評(píng)論 8 265
  • 原文: iOS應(yīng)用架構(gòu)談 view層的組織和調(diào)用方案 iOS應(yīng)用架構(gòu)談 開篇 iOS應(yīng)用架構(gòu)談 網(wǎng)絡(luò)層設(shè)計(jì)方案 i...
    難卻卻閱讀 1,257評(píng)論 0 7
  • 原文地址:iOS應(yīng)用架構(gòu)談 view層的組織和調(diào)用方案 當(dāng)我們開始設(shè)計(jì)View層的架構(gòu)時(shí)廊驼,往往是這個(gè)App還沒有開...
    Jabir_Zhang閱讀 865評(píng)論 0 1
  • 你是一團(tuán)篝火 在暗里燃燒 溫暖旅人的夜晚 冷下一處灰燼 他們卻不曾為誰(shuí)停留 風(fēng)聲又起 他們走了,于是 你成為世界的情人
    同敬閱讀 282評(píng)論 5 12
  • 時(shí)間真是一本書翻得不經(jīng)意會(huì)忘記 看得太認(rèn)真會(huì)流淚惋砂。 一晃我與病魔相伴了兩年多了妒挎。我的職業(yè) 是與病抗?fàn)帲业氖聵I(yè)是一...
    華人_閱讀 224評(píng)論 0 0