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

SwiftUI项目出现「向无参数调用传参」错误,求排查解决

解决SwiftUI中「Argument passed to call that takes no arguments」错误

你遇到的两次该错误,核心原因是调用视图/对象的初始化器时,传入了其未定义的参数,结合你的代码,具体问题和修复方案如下:

1. OrganizerHomePage 初始化器不匹配

你在authenticatedView和viewForUserType方法中,都使用了OrganizerHomePage(userId: session.userId ?? "")的调用方式,但如果OrganizerHomePage的定义是默认无参初始化器(未声明带userId的初始化方法),就会触发错误。

修复方式二选一:

  • 若OrganizerHomePage需要userId参数,补充带参初始化器:
struct OrganizerHomePage: View {
    let userId: String
    
    // 显式声明带参初始化器
    init(userId: String) {
        self.userId = userId
    }
    
    // 其余视图代码
}
  • 若OrganizerHomePage无需直接传参(比如通过EnvironmentObject获取用户ID),则移除参数调用:
OrganizerHomePage().environmentObject(session)

2. EventManager 初始化器与赋值写法问题

在PoppyApp的初始化方法中,你给_eventManager赋值时的换行可能导致语法歧义,且如果EventManager未定义接受userId的初始化器,也会触发错误。

修复步骤:

首先确保EventManager支持带userId的初始化:

class EventManager: ObservableObject {
    let userId: String
    
    init(userId: String) {
        self.userId = userId
    }
    
    // 其余业务逻辑代码
}

然后修正PoppyApp中的赋值写法(去掉不必要换行,保证代码连贯):

init() {
    FirebaseApp.configure()
    let userId = Auth.auth().currentUser?.uid ?? ""
    _eventManager = StateObject(wrappedValue: EventManager(userId: userId))
}

额外检查项

  • 确认VendorHomeView、FirstView的初始化器定义与调用方式匹配,避免出现类似的参数不匹配问题;
  • 检查Session类中userType、userId属性是否已正确实现并赋值,避免因属性为nil引发的间接错误。

内容的提问来源于stack exchange,提问作者Lori Gronemeyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:33:20