美文网首页
swiftUI 第二章

swiftUI 第二章

作者: 秋叶红90 | 来源:发表于2021-07-14 12:02 被阅读0次

第2章

1. 本地数据获取

func load<T:Decodable>(_ filename:String)->T  {
    
    
        let data: Data

       guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
       else {
           fatalError("Couldn't find \(filename) in main bundle.")
       }

       do {
           data = try Data(contentsOf: file)
       } catch {
           fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
       }

       do {
           let decoder = JSONDecoder()
           return try decoder.decode(T.self, from: data)
       } catch {
           fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
       }
}


2. 模型解析

import MapKit
import SwiftUI
import Foundation
import CoreLocation

struct Landmark: Hashable, Codable {
    var id: Int
    var name: String
    var park: String
    var state: String
    var description: String
    
    private var imageName: String
    var image: Image {
            Image(imageName)
        }
    
    
    private var coordinates: Coordinates

        struct Coordinates: Hashable, Codable {
            var latitude: Double
            var longitude: Double
        }
    var locationCoordinate: CLLocationCoordinate2D {
            CLLocationCoordinate2D(
                latitude: coordinates.latitude,
                longitude: coordinates.longitude)
        }
    
    var mapCoordinate: MKCoordinateRegion {
        MKCoordinateRegion(
                center: locationCoordinate,
                span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
            )
        }
    
}


2. TableView => List 的使用

List.init(landmarks, id: \.id) { landmark in
    
    NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
        LandMarkRow.init(landmark: landmark)
                    }
}.navigationTitle("Landmarks")

3. 页面跳转

NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
    LandMarkRow.init(landmark: landmark)

相关文章

网友评论

      本文标题:swiftUI 第二章

      本文链接:https://www.haomeiwen.com/subject/cxlypltx.html