iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
tags: 釣魚術 swift swiftui JSON

雜談

  • 先前功能修了好幾天,終於把插圖釘功能做出了主要的樣子,更新了原始碼
  • 針對昨天提到要繼續把程式碼中寫死的檔案,抽出來放到檔案中
  • 接下來,我用比較常見的 JSON 來存那些 “圖釘資料”

實作

  • 先將資料寫成一份 json,今天用的是 jsoneditoronline,線上編輯一下,改好之後會自動 Lint,確認格式無誤後就下載吧。
  • 我先放一份到 GitHub Gist - MySecretLocations.json
  • 將這個下載的 MySecretLocations.json 扔進 BaoAnGongFisher 專案目錄中。之後就是從這個格式進行讀寫

本日實作內容

  • 尚未完成
  • <全速開發中 ...>
//
//  SecretLocationsDataLoader.swift
//  BaoAnGongFisher
//
//  Created by nipapa on 2022/9/24.
//

import Foundation
import CoreLocation

public class LocationsLoader {

    @Published var originLoadData = [FishPinAnnotation]()
    @Published var locationData = [PinLocation]()

    init() {
        loadDataFromFile()
    }

    func loadDataFromFile() {

        if let myLocationFile = Bundle.main.url(forResource: "MySecretLocations", withExtension: "json") {

            // 如果上面的 if let statement 不成立則不執行
            do {
                let data = try Data(contentsOf: myLocationFile)
                let jsonDecoder = JSONDecoder()
                let dataFromJson = try jsonDecoder.decode([FishPinAnnotation].self, from: data)
                self.originLoadData = dataFromJson
            } catch {
                print(error)
            }
        }
    }

    func transferCoordinate () {
        for pin in self.originLoadData {
            var latitude = pin.latitude
            var longitude = pin.longitude
//            var coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
            print(latitude)
            print(longitude)
        }
    }
}

struct FishPinAnnotation: Codable {

    var name: String
    var image: String
    var latitude: Double
    var longitude: Double
    var rank: Int
}

參考

  • Codable - A type that can convert itself into and out of an external representation.

上一篇
【Day 18】Swift UI - 私房釣點地圖自訂座標功能
下一篇
【Day 20】FileManager
系列文
無法成為釣魚大師也要努力摸魚!!辣個吃魚神器 APP38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言