我怎样才能在我的 UITableViewController 中解决这个问题
How can I fix this issue in my UITableViewController
这个项目没有 API 请求,我不得不从头开始输入所有内容。我有这些错误,因为使用 MVC 模式,我用相应的数据创建了我的模型。当我尝试 link 将所有内容放在一起时,问题就出现了。我已将警报添加到与此符号 (|!|...) 相关的每一行。
提前为法语道歉:))
这是我的模型文件:
导入基金会
导入 UIKit
结构水果篮{
让 basketName: String
让 basketText: String
让 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 organisme à 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 le changement de saison et faire face aux petits rumes。
Les premières pêches permettent de se réminéraliser et les pommes de s'hydrate 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 antioxidants 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)
}
}
提前感谢您的帮助
注意安全
您没有使用 FruitBasket
的 basket
数据类型。
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)
}
这个项目没有 API 请求,我不得不从头开始输入所有内容。我有这些错误,因为使用 MVC 模式,我用相应的数据创建了我的模型。当我尝试 link 将所有内容放在一起时,问题就出现了。我已将警报添加到与此符号 (|!|...) 相关的每一行。
提前为法语道歉:))
这是我的模型文件:
导入基金会 导入 UIKit
结构水果篮{ 让 basketName: String 让 basketText: String 让 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 organisme à 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 le changement de saison et faire face aux petits rumes。 Les premières pêches permettent de se réminéraliser et les pommes de s'hydrate 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 antioxidants 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)
}
}
提前感谢您的帮助
注意安全
您没有使用 FruitBasket
的 basket
数据类型。
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)
}