я хочу показать доступные времена как смелые и недоступные времена (забастовка) на этикетке с соответствующими данными API - PullRequest
0 голосов
/ 01 апреля 2019

enter image description here

для данных API для дня (различные сроки для всех дней и воскресенье закрыто) и даты, получите время входа и время выхода, после чего измените метку как выделенную жирным шрифтом в доступное время и нанесите удар в недоступное время.

до ввода времени все время недоступно и после ухода все время недоступно, а также обеденное время недоступно

как записать условие из данных API в изменение метки (жирным шрифтом / зачеркнуть)

Ответ API:

 Optional(<__NSSingleObjectArrayI 0x600003873050>(
 {
  day = Saturday;
  dArray = "<null>";
  enteringTime = "09.00 am";
  entryTime = "<null>";
  exitTime = "<null>";
  id = 13;
  leavingTime = "06.00 pm";
  lunchtimeFrom = "13:00";
  lunchtimeTo = "14:00";
 }

Фрагмент кода:

let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "08:05 AM") 

attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length)) 

time805Lbl.attributedText = attributeString

1 Ответ

2 голосов
/ 01 апреля 2019

Определите формат даты в вашем viewController -

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

Теперь добавьте метод для проверки доступного времени

func checkAvailableTime(currentTime: String) -> NSMutableAttributedString {

    let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: currentTime)

    var time = "\(times["lunchtimeFrom"]!)"
    let lunchStartTime = dateFormatter.date(from: time)

    time = "\(times["lunchtimeTo"]!)"
    let lunchEndTime = dateFormatter.date(from: time)


    let personCheckTime = dateFormatter.date(from: currentTime)


    if  (lunchStartTime!.compare(personCheckTime!) == .orderedAscending) && (lunchEndTime!.compare(personCheckTime!) == .orderedDescending){

        attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
    }

    return attributeString
}

Время вызова этого метода -

time805Lbl.attributedText = checkAvailableTime(currentTime: time805Lbl.text!)

Где times - ваш ответ по времени. Я надеюсь, что вы получите ответ, как показано ниже -

let times = [
    "day":"Saturday",
    "dArray":"<null>",
    "enteringTime":"09:00 AM",
    "entryTime":"<null>",
    "exitTime":"<null>",
    "id": 13,
    "leavingTime":"06:00 PM",
    "lunchtimeFrom":"1:00 PM",
    "lunchtimeTo":"2:00 PM"
    ] as [String : Any]

Дайте мне знать, если у вас все еще есть проблемы.

...