Как добавить одно значение из двух значений в ключ параметра в swift?

#json #swift #dictionary #button

#json #swift #словарь #кнопка

Вопрос:

Мой AddEventViewController содержит две кнопки 1) PublishEvent 2) DraftEvent

здесь, если я нажму publisheventBtn, то событие должно отобразиться в сегменте публикации . если я нажму DraftBtn, то событие должно перейти в сегмент черновика

для этого у меня есть параметр JSON, как показано ниже: вот как изменить status значение ключа в соответствии с buttonclick означает, что если я нажимаю PublishEvent, то я должен указать status = "Publish" , и если я нажимаю draftButn, то status = "Draft"

 let parameter = ["status":"Draft", "eventName": eventNameField.text, "eventMessage": msgTextfild.text, "eventDate": Fromdate, "eventTime": fromTime, "eventEndDate": Todate, "eventEndTime": toTime, "isAllDayEvent":"false", "isEventRepeatable":"false"] as [String : Any]
  

оставшийся код:

 func AddEvent(){

let request = NSMutableURLRequest(url:url! as URL,
                                  cachePolicy: .useProtocolCachePolicy,
                                  timeoutInterval: 10.0)
request.httpMethod = "POST"
        if httpResponse!.statusCode == 200 {
            do {
                let jsonObject  = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String :AnyObject]
               let viewController = self.storyboard?.instantiateViewController(withIdentifier: "EventsViewController") as! EventsViewController
                viewController.eventType = "Published"
                self.navigationController?.pushViewController(viewController, animated: true)
                }
            }
            catch  {
                print(error.localizedDescription)
            }
        }
        else {
            self.showAlert(title: "", message: "Please enter vaild details")
        }
    }
})
dataTask.resume()
}


@IBAction func publishNewEvent(_ sender: Any) {

    addNewEvents()
}
@IBAction func draftEvent(_ sender: Any) {

addNewEvents()
}
  

Комментарии:

1. Не связано, но не использует NSMutableURLRequest и NSURL в Swift. И значение словаря JSON никогда не AnyObject , это Any . И .allowFragments бессмысленно, если ожидаемый тип является типом коллекции. И функции name всегда с начальной строчной буквы.

2. @vadian, спасибо .. я буду помнить эти слова

Ответ №1:

Вы могли бы использовать тернарный оператор ? для присвоения значения status переменной и присвоить ей правильное значение в соответствии с условиями.

 let status = didClickDraftButton ? "Draft" : "Publish"
let parameter = ["status": status, ...]
  

Установите значение didClickDraftButton соответствующим образом. Вот пример:

 var didClickDraftButton = true // default value or could use optional if you want

@IBAction func publishNewEvent(_ sender: Any) {
    didClickDraftButton = false
    addNewEvents()
}
@IBAction func draftEvent(_ sender: Any) {
    didClickDraftButton = true
    addNewEvents()
}
  

Комментарии:

1. вот что такое didClickDraftButton

2. didClickDraftButton является Bool . Устанавливается true при нажатии кнопки черновика и false в противном случае.

3. можете ли вы показать, как добавить одно значение из двух значений в status без использования didClickDraftButton

4. Я не уверен, о чем вы просите. Кроме того, в чем причина неиспользования didClickDraftButton свойства?

5. то есть EventsViewController здесь мне нужно передать либо черновик, либо опубликованное право? тогда работает только JSON api na eventType