【发布时间】:2017-02-07 15:19:19
【问题描述】:
我正在构建一个涉及相当复杂的表格视图的辅助项目。我决定从 Producthunt 的应用程序中获取灵感,并为每个日期设置一个标题部分。 但是唉,这个简单的实现比我想象的要难一些。作为参考,我在下面附上了照片,向您展示我要克隆的内容。这是来自 PH 的应用程序:
示例
实施
看看顶部有一个今天和昨天的标题部分,旁边是日期寒冷吗?我问过同行,其中一些人建议尝试 [[array]](数组内的数组)方法。通过枚举将它们划分出来并将它们放入特定的数组中,对吗?这很好,但过了一段时间,你会看到它失控了。例如,下面是我的一些代码:
首先,有一个针对不同日期情况的枚举
enum dateCases {
case today
case yesterday
case twoDaysAgo
case threeDaysAgo
case fourDaysAgo
case fiveDaysAgo
case lastWeek
case lastMonth
case lastYear
case janurary
case feburary
case march
case april
case may
case june
case july
case augest
case september
case october
case november
case december
}
然后对于每个需要这些数组的类都有一个结构:
struct dateCaseController {
var todayArray = [Objects]()
var yesterdayArray = [Objects]()
var twoDaysAgoArray = [Objects]()
var threeDaysAgoArray = [Objects]()
var fourDaysAgoArray = [Objects]()
var fiveDaysAgoArray = [Objects]()
var lastWeekArray = [Objects]()
var lastMonthArray = [Objects]()
var lastYearArray = [Objects]()
var januraryArray = [Objects]()
var feburaryArray = [Objects]()
var marchArray = [Objects]()
var aprilArray = [Objects]()
var mayArray = [Objects]()
var juneArray = [Objects]()
var julyArray = [Objects]()
var augestArray = [Objects]()
var septemberArray = [Objects]()
var octoberArray = [Objects]()
var novemberArray = [Objects]()
var decemberArray = [Objects]()
}
这些对象内部都有日期,我们可以用来分析和划分数据。这个类的每个实例都有这个结构。
毕竟,有一个函数可以将不同的对象划分到它们的特定数组中:
func anilyzeDateForDateCase(){
for object in objects {
let dateValue = (Logic for counting how many days has passed)
switch dateValue {
case 0:
print("")
case 1:
print("")
case 2:
print("")
case 3:
print("")
case 4:
print("")
case 5:
print("")
case 6:
print("")
ect.....
结论
这将是很多切换案例。你可以通过这种方法看出,代码会很快失控。如果我有少量类别,使用这种方法会很好,但事实并非如此。更不用说之后,我将根据部分加载表数组。我可以这样做,但我想知道这是否是解决此问题的正确方法?必须有一个更简单的解决方案。有没有人有这样的实现经验?谢谢。
【问题讨论】:
-
您可以通过在项目中创建 json 文件并使用该数据源来设置所有这些数据,而不是创建这些多个枚举、数组和字典。主要是它也很容易管理。
标签: ios swift uitableview enums