如何用具有相应图像名称的结构替换字符串名称?

时间:2016-12-23 08:08:52

标签: swift uitableview struct

我有一个结构来存储已经捆绑在应用程序中的图片的名称和图像名称,如下所示

struct City { var name: String
              var imageName: String }

class firstViewController: UIViewController

let cities = [City(name:"City00", imageName:"city_00"),
              City(name:"City01", imageName:"city_01"),
              City(name:"City02", imageName:"city_02")]

在displayViewController中,我有一个变量nowCityImages来存储从firstViewcontroller中选择的数据

class displayViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {

var nowCityImages: [String] = []

现在我想在tableview中显示城市的图像

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CityCell

    let outCityImages = nowCityImages[indexPath.item]

    // This is not displaying any images
     myCell.cityImage.image = UIImage(named:outCityImages)

   return myCell
}

如果我使用print(outCityImages),我会将输出视为例外

City00
City02

但我不知道如何替换tableview单元格中的City00 with city_00City02 with city_02,以便显示图片。

2 个答案:

答案 0 :(得分:0)

如果末尾的数字是2位数字:

var str = "City00"
let index = str.index(str.endIndex, offsetBy: -2)

var str1 = str.substring(to: index).lowercased()
var str2 = str.substring(from: index)
let name = "\(str1)_\(str2)" //city_00

答案 1 :(得分:0)

您是否可以更改为获取nowCityImages的代码

    var nowCityImages: [String] = cities.filter(){$0.imageName}

现在它将根据需要返回图像名称。