gpt4 book ai didi

ios - 带有属性包装器的不可用属性

转载 作者:行者123 更新时间:2023-12-05 03:21:34 26 4
gpt4 key购买 nike

我正在开发一个支持 iOS 14 及更高版本的应用程序,但我想使用一些 SwiftUI 3 属性包装器,例如 @FocusState

如何解决 Stored properties cannot be marked potentially unavailable 错误?

这是我们代码的简化版本,它适用于 Xcode 13,但无法使用 Xcode 14 进行编译。

struct MyView: View {
enum Field: Hashable {
case username
}

@State private var myText: String = ""

@available(iOS 15, *)
@FocusState private var focusedField: Field?

var body: some View {
if #available(iOS 15, *) {
TextEditor(text: $myText)
.focused($focusedField, equals: .username)
} else {
TextEditor(text: $myText)
}
}
}

我不能使用 computed property with a backing storage解决方法是计算属性不能有属性包装器。

除了 MyView 的几乎相同的副本外,还有其他我可以使用的解决方法吗?

最佳答案

一种可能的方法是将所有依赖部分分离到一个 subview 中,并将其标记为可用于新操作系统。

这是一个演示:

struct MyView: View {
enum Field: Hashable {
case username
}

@State private var myText: String = ""

@available(iOS 15, *) // << here !!
struct NewTextEditor: View {
@Binding var text: String
@FocusState private var focusedField: Field?

var body: some View {
TextEditor(text: $text)
.focused($focusedField, equals: .username)
}
}


var body: some View {
if #available(iOS 15, *) {
NewTextEditor(text: $myText)
} else {
TextEditor(text: $myText)
}
}
}

关于ios - 带有属性包装器的不可用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72932986/

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