第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)
网友评论