неявное развертывание необязательного значения в пользовательской ячейке табличного представления - PullRequest
0 голосов
/ 26 апреля 2019

Прежде всего, я говорю прямо, я знаю, что это «дубликат», и я уже второй раз задаю тот же вопрос - проблема в том, что мой первый был закрыт без понимания проблемы, поэтому, пожалуйста, если кто-тоснова хочу закрыть этот вопрос, дайте мне понять, что я делаю не так.Решение, которое я получил в прошлый раз, не имело значения, поэтому, если бы я мог обратиться конкретно, это было бы здорово!

Я пытаюсь создать пользовательскую ячейку на табличном виде из массива.когда я добавляю любое поле в свою пользовательскую ячейку, я получаю неожиданный ноль для всех полей, и я не знаю, почему

это моя пользовательская ячейка:

class CustomMovieCell: UITableViewCell {


    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var rating: UILabel!
    @IBOutlet weak var releaseYear: UILabel!
    @IBOutlet weak var genre: UILabel!
    var imageBackground: String!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
}

а это мой UITableView cellForRowAtIndexPath метод:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MovieCell", for: indexPath) as! CustomMovieCell
        let movieFetched = Movie(title: moviesArray[indexPath.row].title, image: moviesArray[indexPath.row].image, rating: moviesArray[indexPath.row].rating, releaseYear: moviesArray[indexPath.row].releaseYear, genre: moviesArray[indexPath.row].genre)
        print(movieFetched)
        cell.title.text? = movieFetched.title
        cell.rating.text? = String(movieFetched.rating)
        cell.releaseYear.text? = String(movieFetched.releaseYear)
        cell.genre.text? = String(movieFetched.genre[0])
        return cell

    }

что мне не хватает?при добавлении ЛЮБОГО из файлов я получаю неожиданно найденный ноль при развертывании необязательного значения - я не знал UIlabel, поскольку IBOutlet является необязательным?даже если они не являются обязательными в моем пользовательском классе ячеек.

при отладке я вижу, что все значения ячейки - название, изображение, рейтинг, releaseYear и жанр равны нулю при попытке присвоить им значение -поэтому я действительно понятия не имею, что делать на этом этапе.Я удалил и заново создал ячейку с нуля, и она не сделала никаких различий.

Как я уже говорил, я знаю, что это "дубликат".хотя, пожалуйста, не закрывайте его, прежде чем вы мне поможете, потому что я не получил никакого ответа в прошлый раз, я был перенаправлен на страницу с текстом, которая не помогла мне понять мою проблему.Другие «дубликаты» страниц похожи на общий вопрос «какие необязательные значения» и не помогают мне решить эту конкретную проблему.

edit: я загрузил этот проект в github, если он поможет кому-нибудь помочь мнечтобы разобраться в этом вопросе

https://github.com/alonsd/MoviesApi

1 Ответ

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

Вы связали пользовательский класс ячеек с 2 ячейками. Один в xib, а другой в этом UIViewController. Эта ячейка прототипа UIViewController's не имеет этих меток. Так что это будет ноль, и это будет крах

Удалить ячейку прототипа из MoviesViewController в раскадровке. И добавить это в MoviesViewController viewDidLoad

tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "MovieCell")

Измените tableView cellForRowAt метод следующим образом

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MovieCell") as! TableViewCell
    cell.title.text = moviesArray[indexPath.row].title
    cell.rating.text = String(moviesArray[indexPath.row].rating)
    cell.releaseYear.text = String(moviesArray[indexPath.row].releaseYear)
    cell.genre.text = String(moviesArray[indexPath.row].genre[0])

    return cell

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