2016-04-23 17 views
3

解決済み!この記事の末尾にあるソリューションを参照してください。Swift 2のDictionary <String、AnyObject>に配列<String>を追加する方法

Alamofireを使用してバックエンドに使用するJSONオブジェクトを作成しようとしています。 String値を持つキーを追加できますが、Arrayの値をAnyObjectに追加できないようです。私は非常にまっすぐ進むだろうが、私は解決策を見つけることができませんでした。

func someFunction(btn: UIButton){ 

     var someDictionary = Dictionary<String, AnyObject>() 
     let someArray = [textField[1].text,textField[2].text,textField[3].text] 
     someDictionary["answer"] = textField[0].text 
     someDictionary["options"] = someArray as? Array // <---- Can't be assigned to AnyObject 

     let url = "http://localhost:3000/api/question" 
     Alamofire.request(.POST, url, parameters: someDictionary).responseJSON { response in 
      if let JSON = response.result.value as? Dictionary<String, AnyObject>{ 
      } 
     } 

} 

はソリューション:as? Arrayを削除し、プロジェクトをきれいにして、再度実行して初期化されたアレイ

func someFunction(btn: UIButton){ 



     var someDictionary = Dictionary<String, AnyObject>() 
     var SomeArray = [String]() 
     for i in 1...3{       //created loop to append the textField text 
      SomeArray.append(textField[i].text!) 
     } 
     someDictionary["answer"] = textField[0].text 
     someDictionary["options"] = SomeArray // Removed "as? Array" 
     let url = "http://localhost:3000/api/question" 
     Alamofire.request(.POST, url, parameters: someDictionary).responseJSON { response in 
      if let JSON = response.result.value as? Dictionary<String, AnyObject>{ 
       print("JSON Response From Server-->\(JSON)") 


      } 
     } 

    } 

答えて

2

を追加するループを作成しました。あなたのコードが私のために働いています。

func someFunction(btn: UIButton){ 

    var someDictionary = Dictionary<String, AnyObject>() 
    let someArray = ["SomeString","SomeString","SomeString"] 
    someDictionary["answer"] = textFields[0].text 
    someDictionary["options"] = someArray // now you can assign 

    let url = "http://localhost:3000/api/question" 
    Alamofire.request(.POST, url, parameters: someDictionary).responseJSON { response in 
     if let JSON = response.result.value as? Dictionary<String, AnyObject>{ 
     } 
    } 

} 
+0

お返事ありがとうございます。これは配列の問題を解決しますが、 'someDictionary [" answer "] = textFields [0] .text'行で文字列値を辞書に渡す必要もあります。辞書に文字列と配列の両方を許可する方法はありますか?編集:あなたのソリューションをテストした後Alamofireの要求は、タイプ辞書

+1

必要があるようです。その場合は、swift辞書を使用する代わりにNSMutableDictionaryを使用することをお勧めします。 – user3815344

+1

@JeffA swift辞書の代わりにNSMutableDictionaryを使用するように答えを変更しました。見てみましょう。 – user3815344

関連する問題