辞書にNSIndexPathをキーとして使用しています。 Swift 2ではうまく動作しますが、Swift 3で動作させるための解決策を見つけることができません。私はStringをキーとして使用したくないので、提案しないでください。キーが文字列ではないSwift 3のDictionaryの値を取得
// init
fileprivate var cachedCellSizes: [NSIndexPath: CGSize] = [:]
// get value
if let size = cachedCellSizes[indexPath] {
return size
}
コンパイラエラー:
Ambiguous reference to member 'subscript'
私がしようとしたが、動作しないいくつかの解決策:
if let size:CGSize = cachedCellSizes[indexPath] as? CGSize {
return size
}
if let size:CGSize = cachedCellSizes[indexPath] as! CGSize {
return size
}
if let size:CGSize = cachedCellSizes["indexPath"] as CGSize {
return size
}
番目のを確認してくださいあなたのindexPathでは、実際には 'NSIndexPath'です。 Coz Swift 3は、テーブルデリゲートメソッドで 'IndexPath'(NSIndexPathではなく)を使用します。そうであれば 'if let size = cachedCellSizes [indexPath as! NSIndexPath] 'または辞書のキーを' IndexPath'に変更してください – RJE