Swift 3 不能使用 SwiftyJSON 和 Alamofire 为“String”类型的值下标“String”类型的索引

Posted

技术标签:

【中文标题】Swift 3 不能使用 SwiftyJSON 和 Alamofire 为“String”类型的值下标“String”类型的索引【英文标题】:Swift 3 cannot subscript a value of type 'String' with an index of type 'String' using SwiftyJSON and Alamofire 【发布时间】:2017-08-02 20:19:29 【问题描述】:

这是代码,我正在制作一个比特币价格跟踪器应用程序,并且我是 ios 开发新手,所以我正在努力解决这个错误:( 感谢任何帮助。我正在使用 Alamofire 和 SwiftyJSON 来完成 json 工作。他们是使用 cocoapods 导入。这是我使用的 json:https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD

// Connect the UI
@IBOutlet weak var PriceLabel: UILabel!
@IBOutlet weak var PercentageLabel: UITextView!
@IBOutlet weak var CurrencyPicker: UIPickerView!

var url : String = "https://apiv2.bitcoinaverage.com/indices/global/ticker/BTCUSD"

var Price : String = ""

var jsondata = ""


// Called before app is shown to user
override func viewDidLoad() 
    super.viewDidLoad()

    // Request the JSON Data
    requestJson()



func requestJson()
    Alamofire.request(url).response  response in
        print("Request: \(response.request)")
        print("Response: \(response.response)")

        if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) 
            print("Data: \(utf8Text)")
            self.parseJSON(json: utf8Text)
        
    


func parseJSON(json: String)
    Price = jsondata["ask"].stringvalue **This is where it kicks an error**

【问题讨论】:

您已将 jsondata 定义为字符串,但您试图将其用作字典?试试: var jsondata: [AnyHashable: AnyHashable] = [:] 刚试了一下,报错:'anyhashable'类型的值没有成员'stringvalue' 【参考方案1】:
func requestJson()
    Alamofire.request(url).response  response in
        if let data = response.data 
            self.parseJSON(json: JSON(data: data))
        
    


func parseJSON(json: JSON)
    Price = json["ask"].stringValue 

对于从 URL 获取 json,您也可以使用 responseJSON

【讨论】:

“'anyhashable'类型的值没有成员'stringvalue'”,这也是使用ninjaproger的解决方案 @WilliamGregory 抱歉,我复制了您的代码 :)。对! JSON 没有成员 stringvalue,但有 stringValue 很奇怪,只是这次'stringvalue'是'stringValue' 效果很好,非常感谢!,将您的答案投票为正确 :)

以上是关于Swift 3 不能使用 SwiftyJSON 和 Alamofire 为“String”类型的值下标“String”类型的索引的主要内容,如果未能解决你的问题,请参考以下文章

“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥

Swift 3 SwiftyJson 获取未知数组键

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中

Swift 3 alamofire swiftyjson 下标

IOS/Swift/JSON:使用 swiftyJSON 解析嵌套的 JSON

如何在 Swift 3.0 中使用 SwiftyJSON 将 JSON 数据分配给 UILabel?