Xcode命名报错:Argument passed to call that takes no arguments
Xcode命名报错:Argument passed to call that takes no arguments

Xcode命名报错:Argument passed to call that takes no arguments

问题复现

在学习Picker选择器时,发现以下报错:

Argument passed to call that takes no arguments

Remove '("Pick a number", selection: $selectedNumber) {
    ForEach(1..<101) { number in
        Text("\(number)")
    }
}'

报错代码:

import SwiftUI

struct Picker: View {
    @State private var selectedNumber = 1
    
    var body: some View {
        Picker("Pick a number", selection: $selectedNumber) {
            ForEach(1..<101) { number in
                Text("\(number)")
            }
        }
        .pickerStyle(WheelPickerStyle())
    }
}

#Preview {
    Picker()
}

经排查发现,问题为SwiftUI视图结构存在命名冲突,即定义的struct Picker与Swift UI自带的Picker控件同名,导致Swift认为我在调取Picker结构,而不是Swift的Picker组件。

解决方案

修改Picker机构的名称,改为SomePicker。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

2条评论

  1. 子慦

    大佬,我做了80个swiftUI文件,不知道点到哪里了,所有的按钮、标签、颜色选择器、日期选择器等全部在新文件里面添加都报错,而且之前的80个文件全体报错。新建项目也不行、重启电脑也不行、更新系统更新Xcode也不行…….

    1. 1、问题描述:报错应该是新添加的文件代码有问题,在同一个项目中,一个文件报错,所有文件都无法正常预览或编译。因此,重启电脑和更新系统都是无法解决这一问题的,问题的根源在于项目文件的某一处代码。
      2、排查方案:需要排查项目中哪个代码出问题了。比较好的方式是排查大法,先从最近做的文件开始,把文件中的所有的代码注释掉,然后按 Command+B 进行编译,如果报错,再注释掉下一个文件的代码,依次排查,直到找到问题文件为止。
      3、定位问题:找到问题文件之后,把前面注释掉的文件代码恢复正常,如果最后问题定位在一个文件中,再依次恢复该文件中的代码,直到复现报错。这时的Xcode报错很有可能会告诉你报错的具体原因。
      4、寻求解决方案,找到问题后处理问题。如果你按照上述流程仍然无法定位问题的话,可以考虑将文件发送到我的邮箱,如果不是很麻烦的话,我可以协助你定位一下问题。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注