文章分享至我的個人技術部落格:
雖然前面兩講都是說了nsurlsession
的一些理論上的知識, 但我們現在起碼對nsurlsession
有個大概的了解, 並不會像一開始的那樣, 一臉懵逼的看著, 這個請求是什麼鬼, 那個方法是什麼鬼,task
是什麼東西, 如果沒有去看的朋友們可以去看看前面兩講玩轉ios開發:nsurlsession講解(一)和 玩轉ios開發:nsurlsession講解(二), 大神就隨意啦.
這裡的工程是仿照raywenderlich
注意: 本工程是在xcode 9 beta 2
,ios 11
的環境下執行的.
這裡我要說明一下, 原文裡的介面是使用storyboard
來搭建的, 我這裡是使用**和masonry, 這裡再次和大神表示感謝.
搭建好的介面也很簡單, 就乙個uitableview
,uitableviewcell
和uisearchbar
, 就完事了, 布局的**都在專案裡, 由於個人沒有什麼藝術細胞, 所以介面略醜, 大家湊合著看吧.
為了讓大家閱讀起來比較方便和清晰, 我這裡用了我一向習慣的mvvm
架構模式, 雖然檔案多了點, 但每個檔案的**都保證在了200
行之內, 個人感覺看起來還是比較舒服的.
queryservice
: 負責實現用uisearchbar
的搜尋網路請求, 當uisearchbar
輸入關鍵字的時候, 通過指定的url
和query
拼接成一條有效的搜尋鏈結, 並且通過nsurlsessiondatatask
進行網路請求, 成功後會進行資料的解析, 並且通過searchmodel
進行組裝, 然後新增到乙個nsmutablearray
物件裡, 最後uitableview
會通過這個nsmutablearray
作為資料來源來重新整理整個uitableview
.
當然這裡我們還需要實現乙個叫做nsurlsessiondownloaddelegate
和nsurlsessiondelegate
兩個協議, 分別實現:
- (void)urlsession:(nsurlsession *)session
downloadtask:(nsurlsessiondownloadtask *)downloadtask
didfinishdownloadingtourl:(nsurl *)location;
- (void)urlsession:(nsurlsession *)session
downloadtask:(nsurlsessiondownloadtask *)downloadtask
didwritedata:(int64_t)byteswritten totalbyteswritten:(int64_t)totalbyteswritten
totalbyte***pectedtowrite:(int64_t)totalbyte***pectedtowrite;
- (void)urlsessiondidfinisheventsforbackgroundurlsession:(nsurlsession *)session;
複製**
這裡面的實現可以去searchsessiondelegate
裡面看看, 這裡就不詳細多說了.
整個專案的核心內容就在這裡了, 更詳細的細節, 大家可以去專案裡自己看看哈, 這裡就不浪費大家的時間了.
最終的效果:
祝大家學習愉快.
碼字很費腦, 看官賞點飯錢可好
玩轉iOS開發 iOS中的Socket程式設計 一
文章分享至我的個人技術部落格 socket翻譯過來中文稱為套接字,這裡我找到了一段比較官方的解釋socket是什麼東西 socket是通訊的基石,是支援tcp ip協議的網路通訊的基本操作單元,包含進行網路通訊必須的五種資訊 連線使用的協議,本地主機的ip位址,本地程序的協議埠,遠地主機的ip位址,...
玩轉iOS開發 《iOS設計模式 觀察者模式》
文章轉至 這幾天在搗鼓新專案,在用通知中心的時候突然想到自己用了那麼久的通知中心,為啥不自己動手實現乙個呢?說幹就幹,於是乎就研究通知中心的原理,當然包括 kvo,這些都是基於觀察者模式 實現的,既然知道了原理,我們就do it 最後 工廠模式,如果覺得好的話,希望大家也可以打賞一下 嘻嘻 祝大家學...
玩轉iOS開發 搭建Mac OS本地SVN伺服器
文章轉至我的個人部落格 在前一段時間,沒網的情況下寫專案,發現一件很蛋疼的事,居然不知道怎麼版本管理了,靈光一閃,自己搭建個本地svn伺服器吧,於是乎這文章就出來了 最後 首先我們要建立乙個svn伺服器存放夾,這裡我的位址是如下 sudo svnadmin create users imac doc...