swift - 如何根据标签名称检查多个案例?
问题描述
我有一个视图控制器,其中包含多个类别的集合视图。获取不同的数据和详细信息,包括与该类别相关的照片。我不知道如何对此进行 switch 语句的案例。一遍又一遍地编写相同的代码似乎不是一个好主意。
我至少要覆盖 14 个不同的单元格...
这是我得到的
// Fetch posts based on trend name/hashtag
func fetchPosts() {
if trendName == "Bike Shorts" {
print("Fetching posts with the hashtag bikeshorts")
HASHTAG_POST_REF.child("bikeshorts").observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.collectionView?.reloadData()
})
}
} else {
if trendName == "Animal Prints" {
self.trendDetails = "This is the label for animal prints"
HASHTAG_POST_REF.child("animalprints").observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.collectionView?.reloadData()
})
}
}
} else {
if self.trendName == "Bermunda Shorts" {
self.trendDetails = "This is the label for bermunda shorts"
HASHTAG_POST_REF.child("bermundashorts").observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.collectionView?.reloadData()
})
}
}
}
}
解决方案
我会使用 enum 来管理您的类别这是一些如何进行的代码
enum Trend: String {
case bike = "bikeshorts"
case animal = "animalprints"
static let allValues: [Trend] = [bike, animals]
var name: String {
switch self {
case .bike: return "Bike Shorts"
case .animal: return "Animal Prints"
}
}
}
var trend: Trend = .bike
func fetchPosts() {
HASHTAG_POST_REF.child(trend.rawValue).observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.collectionView?.reloadData()
})
}
}
您可以获取趋势变量 didSet 以调用 fetch func 或通过 allValues 进行迭代
推荐阅读
- excel - Excel 公式将日期作为标志 (1,0) 获取从现在到过去 1 年的月份。如过去 3 个月、过去 6 个月和年初至今
- ios - iOS:如何将应用程序的所有 ImageView 的“accessibilityIgnoresInvertColors”设置为 true?
- android - How to get first letter of string in flutter dart?
- spring - 如何在回调前添加 /**/ 创建 JSONP 过滤器?
- android - ImageViewHolder.getAdapterPosition() / .getLayoutPosition() 不起作用
- python - 为什么我的碰撞测试总是返回“真”,为什么图像矩形的位置总是错误 (0, 0)?
- python - 如何将正十进制 int 转换为十六进制字符串?
- java - 创建一个随机的,但在某个范围内最频繁的
- flutter - 如何实现异步 | 等待接收 geoLocation 包的距离?
- python - 压缩numpy浮点数组