【问题标题】:How to add an Array<String> to a Dictionary<String, AnyObject> in Swift 2如何在 Swift 2 中将 Array<String> 添加到 Dictionary<String, AnyObject>
【发布时间】:2016-08-16 19:53:00
【问题描述】:

已解决!请参阅本文底部的解决方案

我正在尝试使用 Alamofire 创建一个 JSON 对象以用于我的后端。我可以添加带有字符串值的键,但似乎无法将 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)")


            }
        }

    } 

【问题讨论】:

    标签: swift dictionary alamofire


    【解决方案1】:

    清理您的项目并再次运行。你的代码对我有用,我可以分配

    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>{
            }
        }
    
    }
    

    【讨论】:

    • 感谢您的回复。这解决了数组的问题,但我还需要在 someDictionary["answer"] = textFields[0].text 行将字符串值传递到 Dictionary 中。有没有办法让字符串和数组都进入字典?编辑:在测试您的解决方案之后,似乎 Alamofire 请求需要类型 Dictionary
    • 在这种情况下,我建议你使用 NSMutableDictionary 而不是使用 swift Dictionary。
    • @JeffA 我将答案更改为使用 NSMutableDictionary 而不是 swift Dictionary。看看吧。
    • 不幸的是,这不适用于当前的 Alamofire 请求,因为它需要 Dictionary。看起来我需要创建一个自定义的 Alamofire 请求才能使用 NSMutableDictionary。我将尝试重构 this 帖子中的解决方案。
    • @JeffA 只需删除 as?。一切正常。好好清理并运行您的代码。无需使用 NSMutableDictionary 或自定义框架。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2019-01-29
    • 2015-12-13
    相关资源
    最近更新 更多