ios - 'subscript(_:)' 的使用不明确

标签 ios swift xcode apple-watch watchos

func getCurrency()
    {

        let myLink:[String] = ["url1", "url2", "url3"]
        for link in myLink{
            let url = URL(string: link)
            let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
                if error != nil{
                    print("ERROR")
                }
                else{
                    if let content = data{
                        do{
                            if link == myLink[0]{
                                let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                                if let ratesusd = myJson["INR_USD"] as? Double{
                                    self.usdValue = ratesusd
                                }
                            }
                            else if link == myLink[1]{
                                let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                                if let rateseuro = myJson["INR_EUR"] as? Double{
                                    self.euroValue = rateseuro
                                }
                            }
                            else if link == myLink[2]{
                                let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                                if let ratespound = myJson["INR_GBP"] as? Double{
                                    self.poundValue = ratespound
                                }
                            }


                        }
                        catch{

                        }
                    }
                }
                }
                task.resume()



        }
    }

此错误会定期显示。我已将 if let content = data{ 更改为 if let content = data["content"] as? Double{ 但它显示另一个错误,即“可选类型‘数据’的值?”必须解包以引用包装基类型“数据”的成员“下标””。我在包括 stackoverflow 在内的许多网站上看到了一些相关查询,但它们是 MacOS,但我在 WatchOS 上工作。任何人都请帮忙!

最佳答案

JSON 对象从不未指定AnyObject。如果您期望字典将其转换为字典

let myJson = try JSONSerialization.jsonObject(with: content) as! [String:Any]

这修复了错误,因为编译器现在知道真实类型。

永远不要指定 .mutableContainers。该选项在 Swift 中无效

关于ios - 'subscript(_:)' 的使用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59378361/

相关文章:

objective-c - 拣选员应该如何表现

ios - 从 UIDocumentPicker 获取的本地 URL 在 2 或 3 分钟后不起作用

objective-c - 版本控制的 XCDatamodel 无法打开,文件 .contents 丢失

swift - 如何修复MapBox sceneKit(AR场景)的 'Extra argument '缩放“通话中”?

ios - 打开位置设置在 iOS 11 中不起作用

ios - 如何在 Objective-C 的 NSUserDefaults 中存储我的客户 NSMutableArray?

ios - 使用 Moon-APNS 或 APNS-Sharp 的 Apple 推送通知

Swift4 Playgrounds凯撒密码错误

ios - UIApplication.registerForRemoteNotifications() 只能从主线程调用

iphone - Cocoa错误260,文件路径结构