2016-07-08 4 views
0

Я изо всех сил пытаюсь извлечь точную форму формы в форме Эврика. Ниже мой исходный код до сих пор:Как извлечь значение, полученное из форм Eureka?

class CommunityReportViewController: FormViewController, MFMailComposeViewControllerDelegate{ 

     @IBOutlet weak var activityIndicator: UIActivityIndicatorView! 
     var userTitleChoice: String = "" 
     var userCategoryChoice : String = "" 
     var userDescriptionChoice: String = "" 



     @IBOutlet weak var submitReport: UIButton! 



     override func viewDidLoad() { 
      super.viewDidLoad() 
      form +++ Section("Feedback Type") 
       <<< SegmentedRow<String>("feedbackType"){ 
        $0.options = ["Comments", "Bug Reports", "Questions"] 
        $0.value = "Comments" 
        }.onChange{ row in 
         let userDefault = NSUserDefaults.standardUserDefaults() 
         userDefault.setValue(row.value, forKey: "feedbackType") 
       } 

       +++ Section("Follow up?") 
       <<< ActionSheetRow<String>("officeLocation"){ 
        $0.title = "Where are you?" 
        $0.selectorTitle = "Please select the office you are located in" 
        $0.options = ["Singapore", "Prague", "New Jersey"] 

       } 
       +++ Section("Best time to contact you?") 

       <<< PopoverSelectorRow<String>("preferredMethod"){ 
        $0.title = "Preferred Method" 
        $0.options = ["Phone", "Email", "Do Not Contact"] 

       } 
       <<< DateRow("preferredDate"){ 
        $0.title = "Preferred date" 

       } 
       <<< TimeInlineRow("preferredTime"){ 
        $0.title = "Preferred time" 
        $0.noValueDisplayText = "-:--" 

       } 




       <<< ButtonRow() { 
       $0.title = "Submit Feedback!" 
       $0.onCellSelection(self.buttonTapped) 
       } 



     } 

    func buttonTapped(cell: ButtonCellOf<String>, row: ButtonRow) { 
     let valuesDictionary = form.values(includeHidden:true) 
     print (valuesDictionary["feedbackType"], "Feedback") 
     print (valuesDictionary["officeLocation"], "Office") 
     print (valuesDictionary["preferredTime"], "Time") 
     print (valuesDictionary["preferredMethod"], "Method") 
     print (valuesDictionary["preferredDate"], "Date") 
} 
} 

valuesDictionary возвращаемый результат возвращается, как показано ниже, если не предусмотрено никакого входа:

Optional(Optional("Comments")) Feedback 
Optional(nil) Office 
Optional(nil) Time 
Optional(nil) Method 
Optional(nil) Date 

Когда предусмотрены правильные входы, следующий результат возвращается:

Optional(Optional("Comments")) Feedback 
Optional(Optional("New Jersey")) Office 
Optional(Optional(2016-07-08 10:00:23 +0000)) Time 
Optional(Optional("Email")) Method 
Optional(Optional(2016-07-11 07:00:16 +0000)) Date 

Есть ли способ вернуть только значения, выбранные пользователем? Потому что возвращенные результаты трудно разобрать. Пример Я хочу только следующие результаты возвращаются

Comments 
    New Jersey 
    Email 
    2016-07-08 10:00:23 +0000 
    2016-07-11 07:00:16 +0000 

ответ

0

Похоже, вы уже можете получить значение. Все, что вам нужно сделать, это проверить, если поле имеет значение и развернуть УСТРОЙСТВА:

if let feedbackType = valuesDictionary["feedbackType"] as? String 
{  
    print(feedbackType) //should print only "Comments" 
} 

Если значение равно нулю, что не будет удовлетворять условию и пропустить код внутри если блок.

Так что, когда вы распечатываете опцию, это выглядит как свернутая строка, которая должна быть проанализирована, но их просто нужно развернуть для доступа к фактическому значению.

Вы можете найти дополнительные сведения о опциях в документации Apple. here

Смежные вопросы