gpt4 book ai didi

swiftui - @App 存储和 MKCoordinateRegion 函数

转载 作者:行者123 更新时间:2023-12-04 03:28:59 25 4
gpt4 key购买 nike

是否可以在@App Storage 中保存 MKCoordinateRegion 值?
我试过这个。但它不起作用。我收到错误“调用初始化程序时没有完全匹配”。

    @AppStorage("region_key") var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868),
span: MKCoordinateSpan(latitudeDelta: 100, longitudeDelta: 100)
)

最佳答案

存储在 AppStorage 中的类型必须符合 RawRepresentable . MKCoordinateRegion这不是开箱即用的,但您可以添加扩展以增加一致性:

extension MKCoordinateRegion : RawRepresentable {
struct RepresentableForm : Codable {
var centerLat : Double
var centerLong : Double
var latDelta: Double
var longDelta : Double
}

public init?(rawValue: String) {
guard let data = rawValue.data(using: .utf8), let result = try? JSONDecoder().decode(RepresentableForm.self, from: data)
else {
return nil
}
self = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: result.centerLat, longitude: result.centerLong),
span: MKCoordinateSpan(latitudeDelta: result.latDelta, longitudeDelta: result.longDelta)
)
}

public var rawValue: String {
do {
let data = try JSONEncoder().encode(RepresentableForm(centerLat: self.center.latitude, centerLong: self.center.longitude, latDelta: self.span.latitudeDelta, longDelta: self.span.longitudeDelta))
return String(data: data, encoding: .utf8) ?? ""
} catch {
fatalError()
}
}
}

关于swiftui - @App 存储和 MKCoordinateRegion 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67214115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com