2016-08-18 5 views
7

Xcode бета 6 изменил некоторые из Swift языкаXcode 8 бета 6 AnyObject Swift 3 изменяет

С «ид» в настоящее время импортирует как «Любой», а не «AnyObject», вы можете увидеть ошибки, где вы были ранее выполняющий динамический поиск в «AnyObject».

Я попытался исправить либо преобразовать в AnyObject явно, прежде чем делать динамический поиск, или заставить актеров к определенному типу

объекта Но я не уверен, что я делаю это правильно - кто-то может помочь, пожалуйста, здесь оригинальна рабочий код с Beta 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SpecialCell 
     let maindata = values[(indexPath as NSIndexPath).row] 
     cell.name.text = maindata["name"] as? String 
     cell.id.text = maindata["id"] as? String 
     //team_id.text = maindata["team_id"] as? String 

     return cell 
    } 

https://www.dropbox.com/s/ln0vx3b9rbywv83/Screen%20Shot%202016-08-18%20at%2014.32.23.png?dl=0

ответ

7

Согласно бета 6 выпуск нот, которые вы должны (мост) приведение к AnyObject

cell.name.text = (maindata["name"] as AnyObject) as? String 

или сила отбрасывать

cell.name.text = maindata["name"] as! String 

Это еще одна причина предпочесть пользовательские классы/с структур различных типов собственности на общих словарей.

+0

К сожалению, даже с любыми параметрами они оба производят ошибку. Тип Any еще не имеет членов-подписок. – adamprocter

+0

Как мои данные являются каналом JSON, я не был уверен, как использовать какой-либо пользовательский класс или структуру, как вы предлагаете? – adamprocter

+0

Как объявляется 'values'? – vadian

0

мне нужно внести изменения в мой подход и канавы NSMutableArray (который я рад)

поэтому я объявляю пустой массив следующим

var values = [[String:AnyObject]]() 

и поп в него данные, как это сейчас

values = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String : AnyObject]]; 

один другой незначительный твик

let maindata = values[(indexPath).row] 

Задание - спасибо @vadian за прыжок в чат, чтобы помочь мне понять его ответ, который является технически корректным

+0

Разве это не «значения» массива словарей? –