2016-07-01 8 views
0

私はそれを一時変数に渡そうとしていますが、それは起こらないようです。ユーレカフォームから即座にローカル変数に値を抽出する方法は?

アプリを構築しながら、私は引用、それは失敗し、「rateOfPaddy」の値を入力しようとしたらエラーが、ありませんが、「致命的なエラー:オプションの値をアンラップしながら、予想外にnilを見つけ、」

が私を聞かせてください。スウィフトやユーレカに関係する何かが間違っているかどうかを知っていますか?

form +++ Section() 
       <<< DateTimeRow() { 
        $0.tag = "RecordDateTag" 
        $0.title = "Date" 
        $0.value = NSDate() 
        }.cellSetup { cell, row in 
         cell.textLabel?.textColor = UIColor.blackColor() 
        }.onCellHighlight { _ in 
         if let dateInput = formInput["RecordDateTag"] as? String { 
          self.dateInputValue = dateInput 
         } 
        }.onCellUnHighlight { _ in 
         if let dateInput = formInput["RecordDateTag"] as? String { 
          self.dateInputValue = dateInput 
         } 
       } 

私は、使用しなかったローカル変数に情報をチェックして渡すために.onChangeコールバックを使用しました。 .onCellHighlightと.onCellUnHighlightの組み合わせでは、いずれのトリックもできませんでした。

答えて

1

here

を文書として値関数を呼び出してみ

あなたは、以下のようなメソッドを作成することができますし、それが助けをやった

func updateValues() { 
    let allFormData = formInput.values() 

    if let dateInput = allFormData["RecordDateTag"] as? String { 
     self.dateInputValue = dateInput 
    } 
} 
+0

あなたが言ったように私はそれを行いました、そして、私は値を抽出することができました。しかし、私はあなたの構文で誤っていると言いたいと思います。 fetch updateValues(){ LetFormatData = formInput.values() let dateInput = allFormData ["RecordDateTag"]を?文字列{ self.dateInputValue = dateInput } } – Shyam

+0

また、onChangeは必須ではないと思います。フォームがインスタンス化されると、その値は辞書に保存されているように見えます。 – Shyam

0

エラー「致命的なエラー:予期せずに任意の値アンラップしながら、nilを見つけ、」あなたが値としてはnilがあり、オプションのラップを解除しようとしていることを意味します。

ことを確認しておきformInput [KEY]はあなたにでアンラップを強制する前に、期待した型の値を持っています!あなたがより多くの参照の場合

if let value = formInput["Some"] as? Int 
{ 
    //Value exist and is an Int 
} 
else 
{ 
    print("Not an Int") 
} 

バインディングオプションから利益を得ることができる

Swift Type Casting

Swift Optionals

+0

のonChangeコールバックから呼び出します。私がした非常に基本的な間違い。また、私は質問を更新しました。見てください。 – Shyam

+0

@Shyamあなたが共有したコードに基づいて、間違っているとは見当たりません。あなたが 'formInput [" RecordDateTag "]'から期待される値を得られない場合、そのキーに値がないか、ストリングではありません。そこにブレークポイントを置き、そのポイントのデータタイプを確認してください。また、どこで辞書をインスタンス化していますか? – APesate

+0

あなたはポイントしていた!フォームを作成するメソッド内で辞書をインスタンス化しました。一度、私は外にそれを持っていた、私は値を渡すことができた。 – Shyam

関連する問題