2015-06-13 2 views
2

Итак, у меня есть массив как значение одного из моих ключей в словаре, и я хочу, чтобы он установил его как текст UITableViewCell. Как мне это получить? Я кодировал Objective-C, и я начинаю изучать Swift.Получить значения массива внутри Словарь в swift

var content: [String: Any] = ["content": ["North America", "Europe West", "Europe Nordic & East", "Oceania", "Russia", "Turkey", "Brazil", "Latin America North", "Latin America South"], "footer": "Select the League of Legends region for this app to use."] 

autoreleasepool {() ->() in 
    var temp = self.content["content"] 
    cell.textLabel?.text = temp[indexPath.row] as String 
} 

Это возвращает меня 2 ошибки '_??' is not convertible to 'int' и '<<error type>>?' is not convertible to 'int'

+0

, что ваш тип данных температуры – Jacky

+0

Покажите мне значения словаря –

+0

@jacky она должна наследовать тип данных 'self.content [«содержание»]'? – Victor

ответ

3

Вы должны объявлять словарные значения, как AnyObject. Вы должны также использовать, если позволить разворачивать свои УСТРОЙСТВА:

let content: [String:AnyObject] = ["content": ["North America", "Europe West", "Europe Nordic & East", "Oceania", "Russia", "Turkey", "Brazil", "Latin America North", "Latin America South"], "footer": "Select the League of Legends region for this app to use."] 

if let temp = content["content"] as? [String] { 
    cell.textLabel!.text = temp[indexPath.row] 
} 
2

Вы должны преобразовать температуру в массив для получения данных.

var temp: Array = self.content["content"] as! Array 
cell.textLabel?.text = temp[indexPath.row] as! String 

Это решит вашу проблему.

+0

' 'Любой? ' не конвертируется в 'Array ' 'Возможно, это связано с тем, что я не задал тип значения массива, когда объявлял контент? – Victor

+0

var content: [String: AnyObject] делает эту отливку –

2

Это потому, что он не знает, что это за тип вашего темпа. Swift - это безопасный тип.

Я пишу это в игровой площадки:

var content: [String: AnyObject] = ["content": ["North America", "Europe West", "Europe Nordic & East", "Oceania", "Russia", "Turkey", "Brazil", "Latin America North", "Latin America South"], "footer": "Select the League of Legends region for this app to use."] 

var temp:NSArray = content["content"] as! NSArray 

let cellString = temp[0] as! String 

print(cellString) 

enter image description here

+0

своей привычкой, когда я использовал агрессивно оптимизировать использование памяти и очистить вещи сразу после того, как я ее закончу. – Victor