关于在Swift中将类型Int的值赋值为String类型

问题描述 投票:-2回答:3

我正在将JSON数据解析为UITableView,其中包含一个图像和5个标签,其中一个是Int类型,其余类型是String。我已经解析了类型为String的数据但是当我将Int类型添加到我的模型类然后编写用于在cellForItemAtUITableViewDelegate方法中显示单元格的代码时,它说不能将类型Int的值赋给String。

这是我试过的我的应用程序的屏幕截图:

running app screenshot

在这里,它说firstappear,在那里我想显示像1970一样的年份。

模态类:

class Hero {
    var name:String?
    var team:String?
    var imageUrl:String?
    var realname:String?
    var firstappearance:Int?
    var publisher:String?

    init(name:String?, team:String?, imageUrl:String?, realname:String?, firstappearance:Int?, publisher:String?) {
        self.name = name
        self.team = team
        self.imageUrl = imageUrl
        self.realname = realname
        self.firstappearance = firstappearance
        self.publisher = publisher
    }
}

视图控制器:

my view controller file

此外,当我单击表视图中的单元格时,我想将所有内容显示到另一个视图。我已经尝试了表视图的didselectrowat方法,但没有正确

我的didselectroe方法的源代码如下

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let heroesDetails:HeroesDetailsViewController = self.storyboard?.instantiateViewController(withIdentifier: "HeroesDetailsViewController") as! HeroesDetailsViewController

        heroesDetails.heroImage = heroesDetails.detailsImg
        heroesDetails.labelName = heroesDetails.detailsName
        heroesDetails.labelPublish = heroesDetails.detailsPublisher
        heroesDetails.labelAppear = heroesDetails.detailsAppear
        heroesDetails.labelTeam = heroesDetails.detailsTeam
        heroesDetails.labelRealName = heroesDetails.detailsRealName

        self.navigationController?.pushViewController(heroesDetails, animated: true)
    }

我的另一个视图控制器文件名为heroesdetailsviewcontroller swift文件,如下所示:

import UIKit

class HeroesDetailsViewController: UIViewController {


    @IBOutlet weak var detailsImg: UIImageView!
    @IBOutlet weak var detailsName: UILabel!
    @IBOutlet weak var detailsRealName: UILabel!
    @IBOutlet weak var detailsTeam: UILabel!
    @IBOutlet weak var detailsAppear: UILabel!
    @IBOutlet weak var detailsPublisher: UILabel!

    var heroImage: UIImage!
    var labelName: String!
    var labelTeam: String!
    var labelAppear: String!
    var labelPublish: String!
    var labelRealName: String!

    override func viewDidLoad() {
        super.viewDidLoad()

        detailsImg.image = heroImage
        detailsName.text = labelName
        detailsRealName.text = labelRealName
        detailsTeam.text = labelTeam
        detailsAppear.text = labelAppear
        detailsPublisher.text = labelPublish


        // Do any additional setup after loading the view.
    }

}

代码截图:

didselectrowmethod

ios swift
3个回答
1
投票

我刚看了一下API请求 - > https://simplifiedcoding.net/demos/marvel/

firstappearance是字符串,将您的API模型更新为字符串而不是int。

class Hero {
    var firstappearance:String?
}

可以理解为什么你认为它是int,但检查数据的类型而不是值。


1
投票

您正在为您的标签分配Int类型,这将永远不会接受。因此,请更新以下代码行,如下所示:

cell.labelAppear.text = String(here.firstappearance ?? 0)

0
投票

不要再把种姓输入Int .....

cell.labelAppear.text = String(hero.firstAppearance)

UILabel的text属性需要字符串。

© www.soinside.com 2019 - 2024. All rights reserved.