-1

突然、" Ambiguous use of 'subscript'AnyObject " というエラーが表示されて、添字が許可されないのはなぜだろうか。Swift 2.2(Xcode 7.3)

以下は、以前は正常に機能していた私のコードです。

func sampleMethod() {
    PFCloud.callFunctionInBackground("sampleFunction", withParameters: nil) { (response, error) -> Void in
        guard let response = response else {
            if let error = error {
                print(error)
            }
            return
        }
        
        if let records = response as? [AnyObject] { // Valid response
            for record in records {
                if let activeCount = record["activeCount"] as? Int {
                    print("activeCount: \(activeCount)")
                }
                
                if let persons = record["persons"] as? [AnyObject] {
                    for person in persons {
                        if let age = person["age"] as? Int {
                            print("age: \(age)")
                        }
                        if let properties = person["properties"] as? [AnyObject] {
                            for property in properties {
                                if let propertyName = property["name"] as? String {
                                    print("propertyName: \(propertyName)")
                                }
                                if let propertyValue = property["value"] as? String {
                                    print("propertyValue: \(propertyValue)")
                                }
                            }
                        }
                    }
                }
            }
        } else {
            print("Invalid response")
        }
    }
}

に変更したSwift 2.2後、現在動作しているコードは次のとおりです。AnyObject[String: AnyObject]

func sampleMethod() {
    PFCloud.callFunctionInBackground("sampleFunction", withParameters: nil) { (response, error) -> Void in
        guard let response = response else {
            if let error = error {
                print(error)
            }
            return
        }
        
        if let records = response as? [[String: AnyObject]] { // Valid response
            for record in records {
                if let activeCount = record["activeCount"] as? Int {
                    print("activeCount: \(activeCount)")
                }
                
                if let persons = record["persons"] as? [[String: AnyObject]] {
                    for person in persons {
                        if let age = person["age"] as? Int {
                            print("age: \(age)")
                        }
                        if let properties = person["properties"] as? [[String: AnyObject]] {
                            for property in properties {
                                if let propertyName = property["name"] as? String {
                                    print("propertyName: \(propertyName)")
                                }
                                if let propertyValue = property["value"] as? String {
                                    print("propertyValue: \(propertyValue)")
                                }
                            }
                        }
                    }
                }
            }
        } else {
            print("Invalid response")
        }
    }
}

以下は、に変更AnyObjectしている間に解決された一連のエラーのスクリーンショット[String: AnyObject]です。

ここに画像の説明を入力


ここに画像の説明を入力


ここに画像の説明を入力

AnyObjectSwift 2.2 で添え字が許可されていない理由について何か考えはありますか?

4

1 に答える 1