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 导入”的原因是啥
SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中
Swift 3 alamofire swiftyjson 下标