如何修复'每次''下标'的模糊使用?

时间:2015-11-22 17:11:36

标签: swift2

我正在使用Swift 1.2中写的this class,现在我想将其用于Swift 2.0

我收到错误:Ambiguous use of 'subscript' @ let artist = result["name"] as! String

                    } else if let jsonArtists = jsonResult["artists"] as? NSDictionary {
                    if let results:NSArray = jsonArtists["items"] as? NSArray {
                        dispatch_async(dispatch_get_main_queue(), {
                            self.searching = false
                            var suggestionResults: [spotifySearchResult] = []
                            for result in results {
                                let artist = result["name"] as! String
                                var sugresult = spotifySearchResult()
                                sugresult.artist = artist
                                if !suggestionResults.contains(sugresult) {
                                    suggestionResults.append(sugresult)
                                }
                            }
                            handler(suggestionResults)
                        })
                    }
                }
            }

我尝试了不同的修补程序,例如let artist = (result["name"] as! String)let artist = (result["name"] as! String) as! String 但没有任何效果。

我知道这个问题已经发布了4次但是,我找不到任何人解释如何在每种情况下解决这个问题,只是逐个案例。

有人可以解释我如何进行调查以解决问题吗?不仅仅是我的案件的修复。我宁愿用你的提示自己解决它!

BTW是什么意思subscript?下标是引号之间的东西吗?恕我直言,错误信息有点模糊......

编辑:

class spotifySearchResult : NSObject {
var artist=""
var track=""
var duration=0
var spotifyURL = NSURL()
var spotifyURI = NSURL()

override func isEqual(theObject: AnyObject?) -> Bool {
    if let myObject = theObject as? spotifySearchResult {
        return (myObject.artist.uppercaseString == self.artist.uppercaseString && myObject.track.uppercaseString == self.track.uppercaseString)
    }
    return false
}
}

1 个答案:

答案 0 :(得分:0)

订阅意味着对item["key"]

使用较短的语法item.objectForKey["key"]

results似乎是一系列字典,所以我建议将其转换为更具体的类型

if let results = jsonArtists["items"] as? [[String:AnyObject]] {

或者甚至,如果所有值都保证是字符串

if let results = jsonArtists["items"] as? [[String:String]] {