我正在开发一个Swift包,其中一个选项是传入一个泛型类型(Person
),然后GenericStruct
可以使用传入类型的属性。显然问题在于泛型类型T
不知道究竟传入了什么类型。 有没有一种方法来定义在泛型类型T
上访问属性的方式?
struct Person: Equatable {
var name: String
var height: Double
}
struct ContentView: View {
@State private var james = Person(name: "James", height: 175.0)
var body: some View {
GenericStruct(person: $james)
}
}
struct GenericStruct<T: Equatable>: View {
@Binding var person: T
var body: some View {
Text(person.name)) // This line.
}
}
我希望在传递给 GenericStruct
时,能够明确指定要访问 Person
上的哪个属性。该属性并不总是 name
,它可以是在 Person
中定义的任何内容。例如:
GenericStruct(person: $james, use: Person.name)
body
,所以感觉你的例子中还有更多内容。 - Rob NapierGenericStruct(person: $james, use: Person.name)
thenGenericStruct
would access.name
on the passed inPerson
- Joe Scotto.name
需要是一个字符串属性,对吗?(否则你无法在调用Text时使用它)。这是可行的,但只需传递一个字符串绑定更容易和更灵活:GenericStruct(string: $james.name)
。 - Rob NapierKeyPath
已经生效了,谢谢! - Joe Scotto