我正在将JSON数据解析为UITableView
,其中包含一个图像和5个标签,其中一个是Int
类型,其余类型是String
。我已经解析了类型为String
的数据但是当我将Int
类型添加到我的模型类然后编写用于在cellForItemAt
的UITableViewDelegate
方法中显示单元格的代码时,它说不能将类型Int的值赋给String。
这是我试过的我的应用程序的屏幕截图:
在这里,它说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
}
}
视图控制器:
此外,当我单击表视图中的单元格时,我想将所有内容显示到另一个视图。我已经尝试了表视图的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.
}
}
代码截图:
我刚看了一下API请求 - > https://simplifiedcoding.net/demos/marvel/
firstappearance是字符串,将您的API模型更新为字符串而不是int。
class Hero {
var firstappearance:String?
}
可以理解为什么你认为它是int,但检查数据的类型而不是值。
您正在为您的标签分配Int
类型,这将永远不会接受。因此,请更新以下代码行,如下所示:
cell.labelAppear.text = String(here.firstappearance ?? 0)
不要再把种姓输入Int .....
cell.labelAppear.text = String(hero.firstAppearance)
UILabel的text属性需要字符串。