You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Swift会报错「Argument passed to call that takes no arguments」

Swift报错「Argument passed to call that takes no arguments」解决方案

报错原因

你为PrimaryView自定义了无参初始化方法后,Swift 不会再为该结构体自动生成默认的带成员参数的初始化器(即init(j: String))。未自定义init时系统自动生成的成员初始化器支持你调用PrimaryView(j: i)传参构造实例,自定义无参init后该方法不存在,就会触发“调用无参数方法却传入了参数”的报错。

修复方案

根据你的业务需求选一种即可:

  • 方案1:调整自定义初始化方法,接收参数并完成赋值
struct PrimaryView: View {
    var j: String
    // 自定义带参初始化方法
    init(j: String) {
        self.j = j
        UITableView.appearance().backgroundColor = .blue
    }
    var body: some View {
        Text("Hello, world!")
    }
}

调用处PrimaryView(j: i)不需要改动。

  • 方案2:不需要外部传入j参数时,直接修改调用代码
    把ContentView里的调用代码改为PrimaryView()即可,你原本的j已经设置了默认空字符串值,不需要额外传参构造。

优化提示

UITableView.appearance()属于全局UI配置,建议放到App入口的初始化逻辑中执行,不要放在View的init方法里,避免View多次构造时重复执行无意义的全局配置代码。

内容的提问来源于stack exchange,提问作者Malachy Fernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:06:03