关于在Swift

时间:2019-04-18 04:44:50

标签: ios swift

我正在将JSON数据解析为UITableView,其中它由一个图像和5个标签组成,其中一个标签的类型为Int,其余标签的类型为String。我已经解析了类型String的数据,但是当我将Int类型添加到模型类中,然后用cellForItemAt的{​​{1}}方法编写用于显示单元格的代码时,它说无法分配Int类型的值转换为String。

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

running app screenshot

在此显示为UITableViewDelegate的地方,我要显示firstappear之类的年份。

模块类别:

1970

ViewController:

my view controller file

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

我的didselectroe方法的源代码如下

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
    }
}

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

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)
    }

代码屏幕截图:

didselectrowmethod

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

class Hero {
    var firstappearance:String?
}

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

答案 2 :(得分:0)

不要再次将种姓输入Int .....

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

text属性需要字符串。