2014-07-10 3 views
3

Я нашел несколько вопросов о stackoverflow об этом, но ни один из них не решил мою проблему.Получить AnyObject от словаря

У меня есть Dictionary <String, AnyObject>, населенный различными видами объектов (ints, строки, массивы). Когда я хочу, чтобы получить какое-либо значение на основе ключа, единственный способ, которым я могу это

let lTitle: AnyObject? = content["title"]; // content is a Dictionary 
    mTitleLabel.text = lTitle as String; 

Это выглядит ужасно для меня, но я пытался намеками от вопросов другого StackOverflow, и они не работали.

Кто-нибудь знает еще один более короткий способ получить AnyObject от Dictionary?

ОБНОВЛЕНО

Это будет работать, даже этот путь mTitleLabel.text = content["title"] as AnyObject? as String

ответ

0

Это прекрасно работает

mTitleLabel.text = content[ListCellContentKey.title]! as String; 

Не забудьте проверить, если ключевые возвращения словаря значение в противном случае это приведет к краху, когда вы будете пытаться заставить разворачивания

0

Попробуйте

mTitleLabel.text = content["title"] as? NSString 
0

Хотите значения в вашем словаре быть AnyObject? Int, String и Array соответствуют любому, но не AnyObject.

Если у вас есть классы Foundation, импортированные в ваш проект, Swift иногда переводит Int в NSNumber, String в NSString и Array в NSArray вместо того, чтобы бросать ошибку. Вероятно, поэтому вам нужно сделать многоступенчатый отбор, если вы хотите перейти из AnyObject в String, потому что вам нужно пройти через NSString, а затем переместить его.

Если вы сделаете свой словарь типа [String:Any], он станет намного чище.

var content: Dictionary<String, Any> = ["title":"myTitle"] 
let lTitle = content["title"] as String