2014-12-07 3 views
1

Я пытаюсь получить «readerSession» из ассоциативного массива и поместить его в переменную. Это то, что я пробовал.Как получить значение из ассоциативного массива с помощью Swift

Код

println(thevalue) 

Возвращается

{ 
    readerSession = 41; 
    tax = 7; 
    tax2 = 6; 
    taxName = GST; 
    taxName2 = PST; 
} 

Так readerSession равно 41, теперь давайте посмотрим, смогу ли я получить Ахольд него.

Код

println(thevalue["readerSession"]) 

Возвращается Факультативно (41)

Ok велика, именно то, что я хочу, теперь я пытаюсь поставить его в переменную.

Код

var readerSession = thevalue["readerSession"] as? String ?? "0" 
println("READER SESSION \(readerSession) ") 

Возвращается READER СЕССИЯ 0

Почему "0" ??? Он должен быть «41»

ответ

1

Причина, по которой вы получаете "0", состоит в том, что значение, хранящееся в ассоциативном массиве, составляет Int, а не String. Поэтому, когда вы пытаетесь выполнить кастинг до String, cast возвращает null, поэтому правая сторона ?? запускается, и вы получаете нулевую строку.

Вы можете исправить это следующим образом:

var readerSession : AnyObject = thevalue["readerSession"] ?? "0" 
+0

работал! Спасибо! –

+0

, но таким образом 'readerSession' иногда является' NSNumber', а иногда и 'NSString', который не может быть хорошим дизайном – newacct

+0

@newacct Я согласен - это только обходной путь для данного дизайна. – dasblinkenlight

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