2016-09-21 1 views
-1

У меня есть обновление быстро 2,3 до быстрых 3, и я получил эту ошибкувопроса о неоднозначной ссылке на член «подстрочный» swift3

Неоднозначности ссылки на член «подстрочного» swift3

здесь кода

var cellDescriptors: [[String:Any]]! 

    func loadCellDescriptors() { 
    if let path = Bundle.main.path(forResource: "ProfileDescriptor", ofType: "plist") { 
     cellDescriptors = NSMutableArray(contentsOfFile: path) 
     getIndicesOfVisibleRows() 



     tableView.reloadData() 
    } 
} 


if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == false { 
      shouldExpandAndShowSubRows = true 
     } 

я получил ошибку на этой линии

if cellDescriptors[indexPath.section][indexOfTappedRow]["isExpanded"] as! Bool == false 

Дайте мне какие-либо предложения, как я могу решить эту проблему

+0

благодарит за ответ, но я уже пробовал, но это не работает –

+0

не удалось получить ошибку –

+0

да, но не работает –

ответ

1

Вы не можете использовать цепочку подписок в Swift 3, не говоря компилятор промежуточных типов

let section = cellDescriptors[indexPath.section] as! [Any] 
let rowItem = section[indexOfTappedRow] as! [String:Any] 
if rowItem["isExpanded"] as! Bool == false { 
     shouldExpandAndShowSubRows = true 
} 

И как всегда, никогда не использовать изменяемые коллекции Foundation типы NSMutableArray/Dictionary в Swift, если у вас нет абсолютно никакого выбора. Они не могут быть соединены с Swift, и им не хватает информации о типе.

+0

спасибо за это, когда я объявляю let section = cellDescriptors [indexPath.section] as! [Любые] Я получил эту ошибку Cast from '[String: Any]' для несвязанного типа '[Any]' всегда сбой –

+0

Тогда ваша цепочка неверна. Согласно вашему коду 'cellDescriptors' должен содержать массив, потому что' indexOfTappedRow' кажется целым. '[String: Any]' индексируется ключом ('String') – vadian

Смежные вопросы