Swift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView

Posted

技术标签:

【中文标题】Swift 3 错误:“参数标签 \'(named:_:,_:,)\' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView【英文标题】:Swift 3 error: "Argument labels '(named:_:,_:,)' do not match any available overloads" while trying to load an array of UIImage into a UITableViewSwift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView 【发布时间】:2017-05-18 22:18:39 【问题描述】:

我在尝试将一组图像加载到 UITableView 中时遇到问题,该 UITableView 具有另一个视图控制器中的原型单元格。

我似乎没有从swift 3 error : Argument labels '(_:)' do not match any available overloads 得到答案,因为我很新,无法从答案中得出解释。

我收到的标题错误来自:

let portraitsOfHeroes:[UIImage] = UIImage(named: "picture1", "picture2", "picture3")

在尝试使用 (portraitsOfHeroes) 制作图像数组时:

import UIKit

class NewHeroVC: UIViewController, UITableViewDataSource 

let listOfHeroes:[String] = ["Name1", "Name2", "Name3"]
let portraitsOfHeroes:[UIImage] = UIImage(named: "picture1", "picture2", "picture3")

并通过 (cell.newHeroPortrait.image) 使用它们:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "heroCell", for: indexPath) as! NewHeroCell
    cell.newHeroName.text = listOfHeroes[indexPath.row]
    cell.newHeroPortrait.image = portraitsOfHeroes[indexPath.row]
    return cell

它在我的阵列上返回错误的原因是什么?

【问题讨论】:

【参考方案1】:

我觉得你需要

let portraitsOfHeroes:[UIImage] = [UIImage(named: "picture1"), UIImage(named: "picture2"), UIImage(named: "picture3")

【讨论】:

非常感谢您!我的阵列线出了什么问题?编辑:嘿,不得不一遍又一遍地重复“UIImage(命名:“...”)”似乎很乏味。有没有更好的方法来构造那行代码?【参考方案2】:

您的问题是 UIImage(named:) 只能采用一个名称,并且只返回一个图像。您需要为每个图像名称创建单独的 UIImage 实例。

如果您想避免反复输入UIImage(named:) 部分,可以使用flatMap 和文件图像名称数组:

let portraitsOfHeroes:[UIImage] = ["picture1", "picture2", "picture3"].flatMap  UIImage(named: $0) 

这种方法的好处是它可以处理丢失的图像。如果UIImage(named:) 为给定的图像名称返回nil 图像,则该图像根本不会出现在数组中。

【讨论】:

非常好用,比重复输入 UIImage(named:) 好多了。

以上是关于Swift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

从 Swift 2.3 迁移到 Swift 3 错误消息

Pod 安装错误后,Swift 3 结果出现编译错误

将 swift 2.3 转换为 swift 3 错误

swift swift中的错误处理3

Swift 2.3 到 Swift 3.1 迁移 - Alamofire 请求错误

解析错误处理 swift 3