使用时
@AppStorage("navigationWaypointID") var navigationWaypointID: UUID?
Run Code Online (Sandbox Code Playgroud)
我得到一个No exact matches in call to initializer
.
我可以通过使用字符串和使用该字符串作为事实来源的自定义属性来解决此问题,但这并不理想。例如,
@AppStorage("selectedWaypointID") var selectedWaypointIDString: String?
var selectedWaypointID: UUID? {
get { UUID(uuidString: selectedWaypointIDString ?? "") }
set { selectedWaypointIDString = newValue?.uuidString }
}
Run Code Online (Sandbox Code Playgroud)
我们可以确认UUID
协议RawRepresentable
,使其适合 init 之一AppStorage
。
这是一种可能的方法。使用 Xcode 13.2 / iOS 15.2 进行测试
extension UUID: RawRepresentable {
public var rawValue: String {
self.uuidString
}
public typealias RawValue = String
public init?(rawValue: RawValue) {
self.init(uuidString: rawValue)
}
}
Run Code Online (Sandbox Code Playgroud)
然后你原来的(下面)代码就可以“按原样”工作
@AppStorage("navigationWaypointID") var navigationWaypointID: UUID?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
864 次 |
最近记录: |