Generics 通用SwiftUI视图的字符串推断协议
我遇到了一个问题,即存在哪些协议来指定SwiftUI中的泛型类型,以在Generics 通用SwiftUI视图的字符串推断协议,generics,view,swiftui,protocols,inference,Generics,View,Swiftui,Protocols,Inference,我遇到了一个问题,即存在哪些协议来指定SwiftUI中的泛型类型,以在text视图中显示为文本 import SwiftUI struct GenericTextView<A: DeclarationInQuestion>: View { var printableInstance: A var body: some View { Text("\(printableInstance)") } } struct
text
视图中显示为文本
import SwiftUI
struct GenericTextView<A: DeclarationInQuestion>: View {
var printableInstance: A
var body: some View {
Text("\(printableInstance)")
}
}
struct GenericTextView_Previews: PreviewProvider {
static var previews: some View {
GenericTextView(printableType: Int(1))
}
}
导入快捷界面
结构GenericTextView:视图{
var printableInstance:A
var body:一些观点{
文本(“\(printableInstance)”)
}
}
结构GenericTextView\u预览:PreviewProvider{
静态var预览:一些视图{
GenericTextView(可打印类型:Int(1))
}
}
如果有解决方案,我将如何定义和声明
a
?这取决于您是尝试显示传递的值,还是尝试显示传递的键的本地化字符串。看起来您正试图显示传递的值,但您的代码正在为本地化键调用初始值设定项。您可能希望使用文本(逐字:)
:
struct GenericTextView:View{
var printableInstance:A
var body:一些观点{
文本(逐字:“\(printableInstance)”)
}
}
也就是说,我不会那样写。没有理由以这种方式重新字符串化该值。您只需将其字符串化一次,即可避免使用通用的:
struct GenericTextView: View {
var string: String
init<Value>(_ value: Value) {
string = "\(value)"
}
var body: some View {
Text(verbatim: string)
}
}
struct GenericTextView:View{
变量字符串:字符串
初始值(u值:值){
string=“\(值)”
}
var body:一些观点{
文本(逐字:字符串)
}
}
这种方法还允许使用本地化键,只需删除逐字:
struct GenericTextView: View {
var string: String
init<Value>(_ value: Value) {
string = "\(value)"
}
var body: some View {
Text(verbatim: string)
}
}