JSON系列化适用于iOS模拟器,但有错误"使用手机时'subscript'使用模棱两可



下面的脚本在手机上的两个模拟器上使用 Swift 2 工作正常。更新到 swift 3 后,该脚本在模拟器上运行良好,但在为手机构建时会引发错误 - 下标的使用模棱两可 -

let aObject = linkJSON[index] as! [String : AnyObject]

我已尝试更改行以使用 Any,但是错误没有更改。

因此,完整的代码是 -

class ViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!
    var orgs: [String] = []
    var icon: [String] = []
    var address1: [String] = []
    var address2: [String] = []
    var address3: [String] = []
    var address4: [String] = []
    var postcodes: [String] = []
    var phone: [String] = []
    var email: [String] = []
    var website: [String] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        let url=URL(string:"http://webdata.net/service.php")
        do {
            let allLinksData = try Data(contentsOf: url!)
            let allLinks = try JSONSerialization.jsonObject(with: allLinksData, options:.allowFragments) as! [String : AnyObject]
            if let linkJSON = allLinks["organisations"] {
                for index in 0...linkJSON.count-1 {
                    let aObject = linkJSON[index] as! [String : AnyObject]
                    orgs.append(aObject["org"] as! String)
                    icon.append(aObject["icon"] as! String)
                    address1.append(aObject["address1"] as! String)
                    address2.append(aObject["address2"] as! String)
                    address3.append(aObject["address3"] as! String)
                    address4.append(aObject["address4"] as! String)
                    postcodes.append(aObject["postcode"] as! String)
                    phone.append(aObject["phone"] as! String)
                    email.append(aObject["email"] as! String)
                    website.append(aObject["website"] as! String)
                }
            }
            print(orgs)
            self.tableView.reloadData()
        }
        catch {
        }
    }

可能是因为星期一,但我在这里有一个空白。

谢谢

弓帽

我建议你替换

if let linkJSON = allLinks["organisations"] {

if let linkJSON = allLinks["organisations"] as? [[String: AnyHashable]] {

然后,您无需强制解开linkJSON[index],只需执行即可

let aObject = linkObject[index]

最新更新