【问题标题】:String is not convertible to String:AnyObjectString 不能转换为 String:AnyObject
【发布时间】:2015-06-12 13:28:03
【问题描述】:

我正在尝试使用 Alamofire 助手与我的服务器联网。我正在构建一个路由器来处理我的 API 端点。结构本身对我来说似乎很清楚,但我正在努力使用一些 SWIFT 语法。

enum Router:URLRequestConvertible {
    static let baseURLString = "url"

    case AEDS

    var URLRequest: NSURLRequest {
        let (path: String, parameters: [String: AnyObject]) = {
            switch self {
            case .AEDS:
                let params = [""]
                return("/aeds", params)
            }
        }()

        let URL = NSURL(string: Router.baseURLString)
        let URLRequest = NSURLRequest(URL: URL!.URLByAppendingPathComponent(path))
        let encoding = Alamofire.ParameterEncoding.URL
        return encoding.encode(URLRequest, parameters: parameters).0
    }

}

我收到消息,在我的案例 .AED 中,参数抛出错误: [String] 不能转换为 [String: AnyObject]

我对 Swift 有点陌生,到目前为止还想不出从哪里开始。我想我提供了我正在定义的数组。那么这个错误是什么意思呢?

【问题讨论】:

    标签: swift nsurlrequest alamofire


    【解决方案1】:

    在您的 switch 案例中,您需要将 params 定义为字典而不是数组。

     switch self {
            case .AEDS:
                let params = [""]  <---- This is initialising an array containing a string
                return("/aeds", params)
            }
    

    尝试更改为:

    switch self {
                case .AEDS:
                    let params = ["" : ""]  <---- This will create a dict
                    return("/aeds", params)
                }
    

    这应该可以解决您的问题。

    【讨论】:

    • 哇...我完全误解了表达式 String: AnyObject。当然是字典!谢谢nshebbar!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多