Swift 3.0 Class Note – Extension, GCD, WebView, Download Image、JSON

Presenter : Wei Wei

Extension

  • 可幫整數類別(已知類別)加新的屬性或方法

GCD

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-10-14-%e4%b8%8b%e5%8d%885-02-48

圖片來源:Wei Wei

  •  主執行緒處理UI的工作
  • 兩種方式工作模式
    • sync同步(做完再做下一個)
    • async不同步(同時多工)
  • 所以主執行緒不能放同步的工作,因為會阻擋UI的進行
  • Serial Queue vs. Concurrent Queue

more : Grand Central Dispatch Tutorial for Swift: Part 1/2

github : git@github.com:dan12411/HelloGCD.git

WebView

  • 顯示網頁的四種方法:Safari / UIWebView / WKWebView / SFSafariViewController
  • UIWebView / WKWebView 連網的順序:web address -> URL -> request -> WebView
  • 連到非蘋果的網頁,要設定開起權限 
    1. UIWebView:直接拉WebView到storyboard
    2. WKWebView:用程式碼寫WebView,需匯入WebKit,效率比UIWebView好
    3. Safari:連網順序 URL -> 打開Safari
      • iOS 10以上版本:UIApplication.shared.open(url, options: [:], completionHandler: nil)
      • 以前版本:UIApplication.shared.openURL(url)
    4. SFController:需匯入SafariService,連網順序 URL -> 產生Controller -> 推出 Controller
  • 介紹UIWebViewDelegate,並使用Activity Indicator
  • Load Html 或 已經寫好的網頁
  • 介紹用連結打開其他APP(之後似乎其他老師會在教到)

more: iOS 9 快速上手:搜尋 API 與 SFSafariViewController

github : git@github.com:dan12411/HelloWebView.git

Download Image

  •  第一種方法(用Data, 記得要設定背景下載)
  1. 一樣用網址產生URL
  2. 共時佇列去下載

  3. Data 類別,content of url 下載,下載成為資料(Data)"

  4. 回到主佇列去更新 imageView

  5. 用資料產生圖片

  6. 設定給myImageView來顯示

  • 第二種方法(用URLSession, 預設就是背景下載)
  1. 生出URLSession
  2. 一樣用網址產生URL
  3. 用dataTask & resumeTask下載
  4. 記得回到主序列來顯示圖片
  5. 其他:加關鍵字"lazy"的方式 : 一种可以避免无用初始化的有效且简单的方法,而且在没有使用中间私有变量的情况下提供缺省值
  6. 其他功能
    1. 利用新的類別來下載
    2. 用程式碼產生並加上 activity indicator
    3. 利用快取,將圖片存進快取資料夾,並判斷是否下載過圖片,避免重複下載,增快顯示圖片速度

ref : Swift中的延迟加载

github : git@github.com:dan12411/HelloDownloadImage.git

Download JSON

  • 流程:
    1. 確定要用什麼資料
    2. 先用假資料試試看
    3. URLSession下載
  • 以random user generator為範例
    • 生出要用來下載資料的 URLSession
    • 連結API網址
    • 執行downloadTask
    • 如果沒錯誤,就開始解析資料(JSON)
    • 開始下載並更新資料
    • 檢查網路:Reachability
      • 用官方給的code (object-C)
      • Xcode import Reachability.h & Reachability.m 檔案
      • 在HelloJSON-Bridging-Header.h import “Reachability.h"
  • 其他教學:flat design color, static tableView by add container, change Navigation Bar color

more :  Swift JSON教學:如何利用 Data Taipei 公開資料庫建立 App

github : git@github.com:dan12411/HelloJSON.git

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s