У меня есть словарь, который используется в качестве ключа NSIndexPath. Он отлично работает с Swift 2, но я не могу найти решение, чтобы заставить его работать с Swift 3. Я не хочу использовать String в качестве ключа, поэтому, пожалуйста, не предлагайте этого.Получите значение словаря в Swift 3, который не является строкой
// init
fileprivate var cachedCellSizes: [NSIndexPath: CGSize] = [:]
// get value
if let size = cachedCellSizes[indexPath] {
return size
}
Compiler ошибка:
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