Относительно присвоения значения типа Int типу String в Swift - PullRequest
0 голосов
/ 18 апреля 2019

Я анализирую данные JSON в UITableView, в котором они состоят из одного изображения и 5 меток, одна из которых имеет тип Int, а остальные имеют тип String.Я проанализировал данные для типа String, но когда я добавляю тип Int в свой класс модели и затем пишу код для отображения ячеек в методе cellForItemAt для UITableViewDelegate, он говорит, что не может присвоить значение типа 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
    }
}

ViewController:

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

Ответы [ 3 ]

1 голос
/ 18 апреля 2019

Вы назначаете Int тип для вашего ярлыка, который никогда не будет принят. Поэтому обновите следующую строку кода следующим образом:

cell.labelAppear.text = String(here.firstappearance ?? 0)
1 голос
/ 18 апреля 2019

Я только что посмотрел на запрос API -> https://simplifiedcoding.net/demos/marvel/

firstappearance - строка, обновите вашу модель API до строки вместо int.

class Hero {
    var firstappearance:String?
}

Понятно, почему вы подумалиэто int, но проверьте тип данных, а не значение.

0 голосов
/ 18 апреля 2019

Не вводите каст снова в Int .....

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

текстовый атрибут UILabel требует строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...