我创建了如下的字典,
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "listCell") as? ListCell else { return UITableViewCell() }
let book = bookList[indexPath.row]
cell.configureCell(title: book.???, author: ???, bookImage: ???)
return cell
}
我想使用这本书列表制作一个tableView。
Console.ForegroundColor = ConsoleColor.Green;
Console.Clear();
我应该如何使用Dictionary的值和键来配置Cell?
答案 0 :(得分:1)
强烈建议使用自定义结构而不是字典
struct Book {
let title : String
let author : String
let image : UIImage
}
var bookList = [Book(title: "Harry Potter", author: "Joan K. Rowling", image: image),
Book(title: "Twilight", author: "Stephenie Meyer", image: image),
Book(title: "The Lord of the Rings", author: "J. R. R. Tolkien", image: image)]
最大的好处是你有不同的非可选类型,没有任何类型转换
let book = bookList[indexPath.row]
cell.configureCell(title: book.title, author: book.author, bookImage: book.image)
此外,我宣布configureCell
func configureCell(book : Book)
并传递
cell.configureCell(book: bookList[indexPath.row])
然后,您可以将结构的成员直接分配给configureCell
答案 1 :(得分:1)
字典不是你最好的结构。
字典的问题在于你必须处理类型的转换(因为你的字典是[String: Any]
)并处理字典查找 Optional 的事实,因为a密钥可能会丢失。
你可以这样做(不推荐):
cell.configureCell(title: book["title"] as? String ?? "", author: book["author"] as? String ?? "", bookImage: book["image"] as? UIImage ?? UIImage(named: default))
看看有多痛苦?
相反,请使用自定义struct
来代表您的图书:
struct Book {
var title: String
var author: String
var image: UIImage
}
let bookList = [
Book(
title : "Harry Potter",
author : "Joan K. Rowling",
image : image // UIImage is added.
),
Book(
title : "Twilight",
author : " Stephenie Meyer",
image : image
),
Book(
title : "The Lord of the Rings",
author : "J. R. R. Tolkien",
image : image
)
]
然后您的配置变为:
cell.configureCell(title: book.title, author: book.author, bookImage: book.image)