【问题标题】:Swift Compiler Error - Argument passed to call that takes no argumentsSwift 编译器错误 - 传递给不带参数的调用的参数
【发布时间】:2020-10-25 21:09:14
【问题描述】:

我正在尝试学习 Youtube 上的 swift 教程。

https://www.youtube.com/watch?v=-BZdQmHV4MQ&t=471s

但是我收到了这个警告信号,我不知道如何解决它。

这是我的代码。

import SwiftUI

struct ContentView: View {

@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: ToDoItem.getAllToDoItems()) var toDoItems:FetchedResults<ToDoItem>

@State private var newTodoItem = ""

var body: some View {
    NavigationView{
        List{
            Section(header: Text("What's next?")){
                HStack{
                    TextField("New item", text: self.$newTodoItem)
                    Button(action: {
                        let toDoItem = ToDoItem(context: self.managedObjectContext)
                        toDoItem.title = self.newTodoItem
                        toDoItem.createdAt = Date()
                        
                        do {
                            try self.managedObjectContext.save()
                        }catch{
                            print(error)
                        }
                        
                        self.newTodoItem = ""
                        
                    }){
                        Image(systemName: "plus.circle.fill")
                            .foregroundColor(.green)
                            .imageScale(.large)
                    }
                }
            }.font(.headline)
            Section(header: Text("To Do's")) {
                ForEach(self.toDoItems) {todoItem in
                    ToDoItemView(title: todoItem.title!, createdAt: "\(todoItem.createdAt!)")
                }.onDelete {IndexSet in
                    let deleteItem = self.toDoItems[IndexSet.first!]
                    self.managedObjectContext.delete(deleteItem)
                    
                    do{
                        try self.managedObjectContext.save()
                    }catch{
                        print(error)
                    }
                
                }
                
            }
        }
        .navigationBarTitle(Text("My List"))
        .navigationBarItems(trailing: EditButton())
    }
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
    ContentView()
}
}

我在这部分得到了错误

                        ToDoItemView(title: todoItem.title!, createdAt: "\(todoItem.createdAt!)")

ToDoItemView 的代码是这样的。

import SwiftUI

struct ToDoItemView: View {
var body: some View {
    Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}

struct ToDoItemView_Previews: PreviewProvider {
    static var previews: some View {
        ToDoItemView()
    }
}

它说它是“Swift 编译器错误 - 传递给不带参数的调用的参数”。

我该怎么办?

【问题讨论】:

  • 显示ToDoItemView 的代码。另外,在询问 SO 时,请记住通过提供 minimal-reproducible-example 来询问
  • 谢谢,第一次来这里问。 ToDoItemView 就是这个。
  • 我的意思是将代码添加到您的问题中,而不是在 cmets 中。
  • @Frankenstein 哦对不起,我把它添加到我的问题中了。

标签: swift


【解决方案1】:

现在ToDoItemView 在声明ToDoItemView 时没有任何需要初始化的属性。因此,为避免在构建时出现错误,您现在可以使用空初始化程序。随着您继续学习本教程,添加初始化 titlecreatedAt 的初始化程序。所以,现在你可以使用空初始化器,而不是:

ToDoItemView(title: todoItem.title!, createdAt: "\(todoItem.createdAt!)")

用途:

ToDoItemView()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多