#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 naeventType