Swift 中的额外参数调用

Posted

技术标签:

【中文标题】Swift 中的额外参数调用【英文标题】:Extra argument call in Swift 【发布时间】:2020-07-27 17:53:47 【问题描述】:

错误如下:Extra Argument "predicate" in Call。 我正在使用它在应用程序中的数组中进行搜索。

代码是:

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) 
   let request: NSFetchRequest<Item> = Item.fetchRequest()
   print(searchBar.text!)

   let predicate = NSPredicate(format: "title CONTAINS[cd] %@", searchBar.text!)

   request.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)]

   loadItems(with: request, predicate: predicate)

感谢任何帮助。

【问题讨论】:

你是怎么调用这个函数的? 根据代码和错误信息loadItems没有第二个参数。您可以将谓词分配给请求。 在加载项中。最后一行。 为什么不将谓词分配给请求? request.predicate = predicate 会调查的。谢谢。 【参考方案1】:

您必须将谓词分配给请求。

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) 
   let request: NSFetchRequest<Item> = Item.fetchRequest()
   print(searchBar.text!)

   request.predicate = NSPredicate(format: "title CONTAINS[cd] %@", searchBar.text!)

   request.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)]

   loadItems(with: request)

   self.tableView.reloadData() //for reloading the table view

这应该可以正常工作。

【讨论】:

【参考方案2】:

谓词是请求上的一个属性,也许你的意思是

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) 
   let request: NSFetchRequest<Item> = Item.fetchRequest()
   
   let predicate = NSPredicate(format: "title CONTAINS[cd] %@", searchBar.text!)
   request.predicate = predicate
   request.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)]

   loadItems(with: request)

【讨论】:

以上是关于Swift 中的额外参数调用的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4“调用中的额外参数”Rxswift

Swift 中的额外参数调用

Swift 调用中的额外参数“谓词”

如何在 swift 的操场上修复“调用中的额外参数 'at'”

Alamofire Swift 3.0 调用中的额外参数

为啥我在 Swift 中的初始化程序不断收到“调用中的额外参数”