Swift中将随机Int拼接进@State属性字符串时出现报错如何解决?
你用到的两种字符串拼接写法本身语法完全正确,报错和拼接方式无关,问题出在**@State修饰的存储属性在初始化阶段不能直接引用同属一个实例的另一个@State属性**:属性初始化时整个实例还没有完成构造,无法读取到a的实际值,才会触发报错。
给你提供两种最常用的解决方案:
- 方案1:把
playerCard改为计算属性,会自动跟随a的值动态拼接,适合playerCard不需要单独修改、仅跟随a变化的场景
@State var a = Int.random(in: 1...10) // 直接定义为计算属性即可,不需要@State修饰 var playerCard: String { "card\(a)" }
- 方案2:保留
playerCard的@State属性,在视图加载完成后再赋值,适合后续需要单独修改playerCard值的场景
@State var a = Int.random(in: 1...10) // 先给空初始值 @State var playerCard = "" var body: some View { // 此处放你原来的视图代码 .onAppear { // 视图加载完成后实例已经构造完成,可以正常读取a的值 playerCard = "card\(a)" } }
内容的提问来源于stack exchange,提问作者yleyver
相关产品推荐
相关产品推荐

