2016-08-18 21 views
7

Xcode beta 6 zmieniła niektóre Swift JęzykXcode 8 beta 6 AnyObject Swift 3 zmienia

Ponieważ 'id' teraz importuje jako 'każdą' zamiast 'AnyObject', mogą pojawić się błędy, gdzie były poprzednio przeprowadzając dynamiczne wyszukiwanie w "AnyObject".

Próbowałem poprawkę do obu oddanych do AnyObject jawnie przed wykonaniem dynamiczne wyszukiwanie, lub zmusić obsadę do określonego typu obiektu

Ale nie jestem pewien, robię to prawidłowo - może ktoś pomóc proszę tutaj jest oryginalny kod roboczych od 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

Odpowiedz

7

Według beta 6 Uwagi do wydania trzeba (most) oddanych do AnyObject

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

lub siła rzucać

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

To jeszcze jeden powód, aby wolą niestandardowych klas/konstrukcjom z odrębnych typów własności ponad wspólnych słowników.

+0

niestety nawet z opcji albo oboje produkują typu błędu Każdy ma członków indeksy dolne nadal. – adamprocter

+0

Ponieważ moje dane są kanałem JSON, nie wiedziałem, jak użyć niestandardowej klasy lub struktury, jak sugerujesz? – adamprocter

+0

W jaki sposób zadeklarowano "wartości"? – vadian

0

Musiałem dokonać zmian w swoim podejściu i rowu NSMutableArray (której jestem zadowolony)

więc zadeklarować pustą tablicę następująco

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

i pop dane do niego jak tak teraz

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

jeden inne drobne Tweak

let maindata = values[(indexPath).row] 

zadanie -dzięki @vadian do skoków do czatu, aby pomóc mi zrozumieć jego odpowiedź, która jest technicznie poprawne

+0

Czy "wartości" nie są zbiorem słowników? –

Powiązane problemy