【问题标题】:How can I fix this issue in my UITableViewController如何在我的 UITableViewController 中解决此问题
【发布时间】:2020-06-06 19:55:54
【问题描述】:

这个项目没有 API 请求,我不得不从头开始输入所有内容。我有这些错误,因为使用 MVC 模式,我用相应的数据创建了我的模型。当我尝试将所有内容连接在一起时,问题就出现了。我已将警报添加到与此符号相关的每一行 (|!|...)。

提前为法语感到抱歉:))


这是我的模型文件:


导入基础 导入 UIKit

结构水果篮 { 让篮子名称:字符串 让篮子文本:字符串 让 basketImage: UIImage?

init(basketName: String, basketText: String, basketImage: UIImage?) {
    self.basketName = basketName
    self.basketText = basketText
    self.basketImage = basketImage
}

}


导入基础 导入 UIKit

结构 FruitBasketDetails {

let basket = [FruitBasket(basketName: "Panier Automne", basketText: """

LA CORBEILLE DE FRUITS D'AUTOMNE : UN PANIER POUR LA RENTRÉE

La corbeille de fruits d’automne  est idéale pour la rentrée ! Nous avons choisis pour vous des fruits au coeur de la saison pour vous  faire profiter des meilleurs apports en vitamines et minéraux avec une riche composition de fruits !
Les larges variétés de pommes, de poires et de prunes vous permettront de dynamiser votre organisme pour une rentrée en pleine forme et  faire face aux premiers froids. Les premiers agrumes comme les oranges et les clémentines  vous apporteront, eux, toute la vitamine C nécessaire.
Quant aux raisins, qu’ils soient noirs, verts ou lie-de vin, leurs bienfaits ne sont pus à démontrer ! Riche en antioxydants et polyphénols, ils sont aussi des alliés « détox » appréciés.

…Et que diriez vous d’une petite banane pour la pause de milieu de matinée ?!

""", basketImage: UIImage(named: "automne")), FruitBasket(basketName: "Hiver", basketText: """ LA CORBEILLE DE FRUITS D'HIVER : UN PANIER ACIDULÉ !

Dans la corbeille de fruits d'hiver, les variétés d'agrumes se succèdent en cascade et aide votre organice à rester en forme ! Les kiwis et les litchis ponctuent leurs saveurs entre les variétés de pommes, de poires et de bananes。 Un panier plein d'énergie et de saveurs pour profiter de l'hiver ! """, basketImage: UIImage(named: "panier-hiver")), FruitBasket(basketName: "Printemps", basketText: """ LA CORBEILLE DE FRUITS DE PRINTEMPS : UN PANIER PARFUMÉ !

Cette corbeille de fruits de printemps est composée des dernières variétés d'agrumes comme l'orange maltaises et les clémentines « or »。 Leur richesse en Vitamine C est bien utile pour passer le changement de saison et faire face aux petits rhumes。 Les premières pêches permettent de se réminéraliser et les pommes de s'hydrar en savourant des notes parfumés, sucrées et acidulées。 Vous apprécierez faire une pause fraîcheur entre deux dossiers aussi grâce aux poires et aux bananes qui confectionnent cette généreuse corbeille de fruits de printemps ! """, basketImage: UIImage(named: "panier-ete")), FruitBasket(basketName: "ETE", basketText: """ LA CORBEILLE DE FRUITS D'ÉTÉ:UN PANIER HAUT EN COULEURS!

Dans la corbeille de fruits d'été vous retrouverez de rafraîchissantes pêches et nectarines et des abricots faciles à croquer。 Les petits fruits antioxydants comme les fraises et les cerises vous feront profiter de toutes leurs saveurs...。 à moins que vous ne préféreriez une pomme rafraîchissante ou une banane énergisante ! Profitez de ces fruits stimulants au travail idéalement en milieu de matinée et d'après-midi ! """, basketImage: UIImage(named: "panier-ete"))] }


这是我的控制器


class BasketTableVC: UITableViewController {

var basket = FruitBasketDetails()

override func viewDidLoad() {
    super.viewDidLoad()

    title = "Baskets"
    navigationController?.navigationBar.prefersLargeTitles = true
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return basket.count ***(|!| Value of type 'FruitBasketDetails' has no member 'count')***
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Baskets", for: indexPath)
    cell.textLabel?.text = basket[indexPath.row] ***(|!| Value of type 'FruitBasketDetails' has no subscripts)***
    return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedRowName = basket[indexPath.row] ***(|!| Value of type 'FruitBasketDetails' has no subscripts)***
let selectedRowText = basket[indexPath.row] ***(|!|Value of type 'FruitBasketDetails' has no subscripts)***
let selectedImage = basket[indexPath.row] ***(|!| Value of type 'FruitBasketDetails' has no subscripts)***

let basketInfoVC = self.storyboard?.instantiateViewController(identifier: "BasketDetailsView") as! FruitDisplayVC
basketInfoVC.name = selectedRowName
basketInfoVC.text = selectedRowText
basketInfoVC.image = selectedImage

self.navigationController?.pushViewController(basketInfoVC, animated: true)

}

}

提前感谢您的帮助

注意安全

【问题讨论】:

    标签: uitableview model-view-controller model controller viewcontroller


    【解决方案1】:

    您没有使用FruitBasketbasket 数据类型。

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return basket.basket.count 
    }
    

    还有这个

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let innerBasketData = basket.basket
    let selectedRowName = innerBasketData[indexPath.row]. basketName 
    let selectedRowText = innerBasketData[indexPath.row]. basketText
    let selectedImage = innerBasketData[indexPath.row]. basketImage
    
    let basketInfoVC = self.storyboard?.instantiateViewController(identifier: "BasketDetailsView") as! FruitDisplayVC
    basketInfoVC.name = selectedRowName
    basketInfoVC.text = selectedRowText
    basketInfoVC.image = selectedImage
    
    self.navigationController?.pushViewController(basketInfoVC, animated: true)
    
    }
    

    【讨论】:

    • 非常感谢您的帮助。但是关于“cellForRowAt”,我仍然收到警告: override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Baskets", for: indexPath) cell.textLabel? .text = basket[indexPath.row] (|!| 'FruitDetails' 类型的值没有成员 'fruitName') 返回单元格 }
    • 在访问fruitName之前,使用indexPath.rowFruitDetails的数组中获取特定的FruitDetails对象。 let cell = tableView.dequeueReusableCell(withIdentifier: "Baskets", for: indexPath)let fruitDetails = basket[indexPath.row].basketcell.textLabel?.text = fruitDetails.basketTextreturn cell
    • 超级!我明白知道。和我的名字混淆了。由于您的输入,它现在已修复。非常感谢您的宝贵时间。 ??
    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 2019-10-26
    • 2021-12-06
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2011-02-24
    • 2015-08-04
    相关资源
    最近更新 更多