玩轉iOS開發 NSURLSession講解 三

2021-09-11 09:26:08 字數 1945 閱讀 4007

文章分享至我的個人技術部落格:

雖然前面兩講都是說了nsurlsession的一些理論上的知識, 但我們現在起碼對nsurlsession有個大概的了解, 並不會像一開始的那樣, 一臉懵逼的看著, 這個請求是什麼鬼, 那個方法是什麼鬼,task是什麼東西, 如果沒有去看的朋友們可以去看看前面兩講玩轉ios開發:nsurlsession講解(一)和 玩轉ios開發:nsurlsession講解(二), 大神就隨意啦.

這裡的工程是仿照raywenderlich

注意: 本工程是在xcode 9 beta 2,ios 11的環境下執行的.

這裡我要說明一下, 原文裡的介面是使用storyboard來搭建的, 我這裡是使用**和masonry, 這裡再次和大神表示感謝.

搭建好的介面也很簡單, 就乙個uitableview,uitableviewcelluisearchbar, 就完事了, 布局的**都在專案裡, 由於個人沒有什麼藝術細胞, 所以介面略醜, 大家湊合著看吧.

為了讓大家閱讀起來比較方便和清晰, 我這裡用了我一向習慣的mvvm架構模式, 雖然檔案多了點, 但每個檔案的**都保證在了200行之內, 個人感覺看起來還是比較舒服的.

queryservice: 負責實現用uisearchbar的搜尋網路請求, 當uisearchbar輸入關鍵字的時候, 通過指定的urlquery拼接成一條有效的搜尋鏈結, 並且通過nsurlsessiondatatask進行網路請求, 成功後會進行資料的解析, 並且通過searchmodel進行組裝, 然後新增到乙個nsmutablearray物件裡, 最後uitableview會通過這個nsmutablearray作為資料來源來重新整理整個uitableview.

當然這裡我們還需要實現乙個叫做nsurlsessiondownloaddelegatensurlsessiondelegate兩個協議, 分別實現:

- (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...