generics - 通用 SwiftUI 视图的字符串推理协议
问题描述
我遇到了一个问题,如果有的话,存在哪些协议来指定 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:
.
推荐阅读
- python - 在 Flask 中构建 RESTful API 时出错
- javascript - 从 HTTP 引用 URL 中提取字段/属性
- typescript - Typescript lodash Groupby 嵌套数组
- php - 尝试分配非对象的属性
- c# - Xamarin 将 ItemSource 中的数据绑定到标签文本
- javascript - 如何合并对象数组中的对象?
- django - 如何在 Django Rest 中为谷歌云存储中的文件生成签名 URL?
- java - 用于具有不同依赖项的实现的 Spring 工厂 bean
- python - Django Rest Framework,如何删除 rest_auth 身份验证中的电子邮件字段?
- javascript - 如何使用 python 或 javascript 查找网站的加载时间