我正在使用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
}
}
答案 0 :(得分:0)
订阅意味着对item["key"]
item.objectForKey["key"]
results
似乎是一系列字典,所以我建议将其转换为更具体的类型
if let results = jsonArtists["items"] as? [[String:AnyObject]] {
或者甚至,如果所有值都保证是字符串
if let results = jsonArtists["items"] as? [[String:String]] {