问题描述
我遇到了一个问题,即是否存在协议来在SwiftUI中指定通用类型,以在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))
}
}
如果有解决方案,我将如何定义和声明A
?
解决方法
这取决于您是要显示传递的值,还是要显示传递的键的本地化字符串。看起来您正在尝试显示传递的值,但是您的代码正在调用本地化键的初始化程序。您可能想使用Text(verbatim:)
:
struct GenericTextView<A>: View {
var printableInstance: A
var body: some View {
Text(verbatim: "\(printableInstance)")
}
}
也就是说,我会避免这样写。没有理由以这种方式重新对值进行字符串化。您只需将其字符串化一次即可,并避免使用泛型:
struct GenericTextView: View {
var string: String
init<Value>(_ value: Value) {
string = "\(value)"
}
var body: some View {
Text(verbatim: string)
}
}
这种方法还允许通过单击verbatim:
来定位键。