我需要将图像添加到与tableView单元格相同名称的tableView单元格中。即“波音”单元格使用“ Boeing.png”图片。有些图像是.jpg格式。
我尝试以与节和行布局相同的方式添加图像数组。图片与单元格名称相同。我已在尝试进行更改的地方添加了注释(#1-4)。这应该很简单,但是我看不到我所缺少的。
import UIKit
class NewTableViewController: UITableViewController {
let transportMeans = ["Cars" : ["Ferrari", "Chrysler", "Toyota"], "Trains" : ["Steam", "Diesel", "Electric"], "Planes" : ["AirBus", "Boeing", "Cessna"]]
// #1 added a line for images to be applied:
var transportImages = ["Cars" : ["Ferrari.png", "Chrysler.png","Toyota.png"], "Trains" : ["Steam.png","Diesel.png","Electric.png"], "Planes" : ["AirBus.jpg","Boeing.jpg","Cessna.png"]]
var selectedFileName = ""
struct Objects {
var sectionName : String!
var sectionObjects : [String]!
//#2 added a line for images:
var transportImages : String!
}
var objectArray = [Objects]()
override func viewDidLoad() {
super.viewDidLoad()
// #3 added term 'value' to key:
for (key, value, value) in transportMeans {
print("\(key) -> \(value) -> \(value)")
//#4 added a line for 'transportImages' in the append section-------:
objectArray.append(Objects(sectionName: key, sectionObjects: value, transportImages: value))
}
}
此代码中出现的错误是:
“源文件中的编辑器占位符”,“'((键:字符串,值:[String])'不能转换为'(_,_,_)',元组的数目不同...”, “定义与先前的...冲突” @行: 、、、 “用于transportMeans {(键,值) 、、
答案 0 :(得分:0)
您的transportMeans
的类型为:[String : [String]]
。因此,在for循环中,您应该执行以下操作:
for (key, value) in transportMeans {
print("\(key) -> \(value) -> \(value)")
//#4 added a line for 'transportImages' in the append section-------:
objectArray.append(Objects(sectionName: key, sectionObjects: value, transportImages: key))
}
答案 1 :(得分:0)
首先,从不将结构成员声明为隐式未包装的可选成员。如果需要可选项,则将其声明为常规可选项(?
)。但是在这种情况下,请将它们声明为非可选,并以单数形式命名该结构。如果结构成员不被修改,您甚至可以将它们声明为常量
struct Object {
let sectionName : String
let sectionObjects : [String]
let transportImages : String
}
var objectArray = [Object]()
您正在枚举字典,而不是元组。只有一个key
和一个value
。并且,如果图像名称与公司名称匹配,则实际上不需要transportImages
数组。
var transportImages = ["Cars" : ["Ferrari.png", "Chrysler.png","Toyota.png"], "Trains" : ["Steam.png","Diesel.png","Electric.png"], "Planes" : ["AirBus.jpg","Boeing.jpg","Cessna.png"]]
只需将.png
扩展名添加到map
override func viewDidLoad() {
super.viewDidLoad()
for (key, value) in transportMeans {
objectArray.append(Object(sectionName: key, sectionObjects: value, transportImages: value.map{$0 + ".png"}))
}
}
答案 2 :(得分:0)
如果每个PDF使用每个图像,则声明如下
struct Objects {
var sectionName : String!
var sectionObjects : [String]!
var sectionImages : [String]!
}
并为像belo这样的单元分配
cell.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row]
cell.imageView?.image = UIImage(named: objectArray[indexPath.section].sectionImages[indexPath.row])
由于您对struct var和image数组使用了相同的名称,因此出现错误
源文件中的编辑器占位符”,“'((键:字符串,值:[字符串])' 不能转换为'(_,_,_)',元组的编号不同 的...”,“定义与先前的...冲突” @行:、、、'for (键,值)在transportMeans {',,