【发布时间】:2022-10-15 17:48:04
【问题描述】:
Swift 新手,无法找到解决方案。这可能是一个简单的修复,我无法弄清楚。
该程序在 TextField 中获取用户输入并根据该输入做出反应(如果输入是数字,或者不是数字,以及输入的字符数)。
我试图弄清楚如何重新分配变量像素在条件语句中以改变字体大小。
下面的代码:
import SwiftUI
struct ContentView: View {
@State var p: String = ""
@State var px: Int = 35
var body: some View {
VStack(spacing: 0.0) {
if p.isNotNum {
if p.count > 10 {
px = 20 \\ this breaks
}
Text(String(p))
.font(.system(size: CGFloat(px)))
} else if p.isNum {
if p.count > 10 {
px = 20 \\ this breaks
}
Text(String(p))
}
TextField("P", text: $p)
}
}
}
extension String {
var isNum: Bool {
return Double(self) != nil
}
}
extension String {
var isNotNum: Bool {
return Double(self) == nil
}
}
【问题讨论】:
-
“这破”怎么破?
-
此外,对于特定条件有一个布尔属性是很奇怪的,它恰恰相反。更奇怪的是先检查第一个,然后再检查它的反面(如果
p.isNotNum是假的,那么p.isNum肯定是真的,你不需要检查)。考虑简化为if p.isNum { ... } else { ... } -
您不能在视图中的任何位置使用这种类型的代码
px = 20,它只允许在某些地方使用。我建议你阅读 SwiftUI 的基础知识:developer.apple.com/tutorials/swiftui 来理解这个基本概念。请注意,您的代码logic远低于平均水平。 -
首先关注这个不错的免费在线课程cs193p.sites.stanford.edu
-
确实有些地方很奇怪,这是对需要这些检查的更大代码库的解释