如何将工作日分配给按钮?

时间:2016-12-05 17:12:57

标签: ios swift

我有一个文本字段,viewcontroller中的7个按钮

@IBOutlet weak var courseDesc: UITextField!

@IBOutlet weak var sundayButton: UIButton!
@IBOutlet weak var mondayButton: UIButton!
@IBOutlet weak var tuesdayButton: UIButton!
@IBOutlet weak var wednedayButton: UIButton!
@IBOutlet weak var thursdayButton: UIButton!
@IBOutlet weak var fridayButton: UIButton!
@IBOutlet weak var saturdayButton: UIButton!

如何将以下7个工作日分配到上面的7个按钮,例如,如果用户点击sundayButton,则应在用户保存时将其指定为Sunday

func getWeekDay() -> [String] {
    let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
    calendar.locale = NSLocale.current as Locale
    return calendar.weekdaySymbols
}

var assignDay =  getWeekDay()

let sunday = assignDay[0]
let monday = assignDay[1]
let tuesday = assignDay[2]
let wednesday = assignDay[3]
let thursday = assignDay[4]
let friday = assignDay[5]
let saturday = assignDay[6]

1 个答案:

答案 0 :(得分:3)

我已经多次见过你这个问题了,你仍然没有把它写得很好。但是,让我们看看我是否可以提供帮助。

您尝试在每个按钮中存储一个字符串,以便您可以从barbuttonitem中获取该字符串。

你可以通过几种方式做到这一点。

一:你可以扩展UIBarButtonItem,给它一个像

这样的属性
var day: String?

然后为每个按钮设置该属性并获取保存功能中的值(同时考虑它是可选的)。可能不想这样做,因为你扩展了所有的按钮项目,也许你不想这样做。

二:你可以制作一个小词典:

  let buttonDays: [UIBarButtonItem: String] = [SundayButton: "Sun",...]

然后在保存中你可以通过这样访问这个字典来抓住这一天。 (它是可选的,所以如果让它解开它)

 if let day = buttonDays[sender] {...}

三:您可以为每个按钮分配一个标签,并在上面的字典中使用该标签。

sundayButton.tag = 0
mondayButton.tag = 1
....
let dayForTag : [Int: String] = [0: "Sun",...]
//then in save function
let day = dayForTag[sender.tag]

你不需要使用上面的字典,只需要一个数组,因为它是零索引的。

但最后,你需要问问自己。 为什么还要在数据模型中存储这些字符串呢? 你的模型并不能说明当天的名字是什么。只有人知道这一点。你已经要存储工作日的价值了。当您返回应用程序的控制器层时,该值可以直接转换为星期几。字符串比16字节int大得多,并且您可以通过存储两者来在模型中创建冗余。

编辑:将应用层转换为控制器。 OSI模型在我的脑海里。糟糕。

在这种情况下,您需要做的就是为每个按钮分配一个标签,为星期日分配0,为星期一等分配1等等。然后将该标签存储在您的数据库中。当您需要访问特定日期的任务时,请使用当天的整数表示进行搜索,而不是字符串。

编辑:我记得我认为星期日在Date()对象中实际上是dayDay,所以你必须考虑到这一点。我认为。我使用它已经有一段时间了。