iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
自我挑戰組

打造專案管理 iOS App 系列 第 13

一個與網路的心靈獨白 URL轉Image

  • 分享至 

  • xImage
  •  

一個與網路的心靈獨白 URL轉Image

動態網頁與靜態網頁的差別,無非就是有數據庫的支援。
採用動態網頁技術的網站可以實現更多的功能,如用戶註冊、用戶登錄、在線調查、用戶管理、訂單管理等等。

動態網頁以數據庫技術為基礎,可以大大降低網站維護的工作量。

這次我們透過資料庫,接收到指定的路徑,顯示指定的照片。

檢視資料

下面的json是透過Get取得的資料。

        {
            "id": 141,
            "title": "Aasassa",
            "status": false,
            "create_user": "test",
            "update_user": "test",
            "description": "Xfgvtybbyvybtvyvyvybyvybybtvtvtvtvyvtvtvtvtvtvtbybybybybyhtbtbyvububybhyjwt yu agh ssh wnteneeth w tenet eye with stuntwoman hey hey ppppp",
            "tag": "green",
            "image": "images/task/2020-09-18 17:32:45 task141.jpeg",
            "card_id": 112,
            "created_at": "2020-09-18T01:41:31.000000Z",
            "updated_at": "2020-09-18T09:32:45.000000Z"
        }

仔細看看,image 的 dictionary,裡面有一段路徑,我們可以透過這段路徑組裝URL。

組成路徑

URL = root domain + image 路徑

每個後端開的Api與生成URL的方法不一定相同,方法應看API文件,或是與後端工程師討論。

        switch type {
        case .gill:
            urlStr = "http://35.185.131.56:8002/" + imageURL
        case .other:
            urlStr = imageURL
        }
        enum ImageURLType{
        case gill,other
    }

製作一組switch與enum,讓生成image時,可以選擇要用特定的URL或是使用指定的路徑。

        let url = URL(string: urlStr)!

將URL字串轉成URL。

        let data = try! Data(contentsOf: url)
        let image = UIImage(data: data)

嘗試轉型data,然後轉成Image?

如果轉型失敗會怎麼樣?

會crash,因此要做錯誤處理。

        do
        {
        let data = try Data(contentsOf: url)
            let image = UIImage(data: data)
            completion(image)
        }catch
        {
            print("image is error")
        }

包成funtion

包成funtion,可以方便在任何地方都可以復用,配合 escaping closure,讓圖片可以傳出去。

func getImage(type:ImageURLType,imageURL:String,completion:@escaping(UIImage?)->Void){
        var urlStr:String
        switch type {
        case .gill:
            urlStr = "http://35.185.131.56:8002/" + imageURL
        case .other:
            urlStr = imageURL
        }
        let url = URL(string: urlStr)!
        let data = try! Data(contentsOf: url)
        let image = UIImage(data: data)
        completion(image)
    }
    enum ImageURLType{
        case gill,other
    }

上一篇
一個與網路的心靈獨白 利用multipart form-data上傳相片
下一篇
安能取熊掌而舍魚 利用 UIImagePickerController 讀取相簿
系列文
打造專案管理 iOS App 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言