2014-12-15 3 views
-2

У меня есть объект/словарь JSON, который я получил от AFNetworking, и хочу условно развернуть ключ в массив строк.Необязательный Binding (String: AnyObject) до [String]

var person: [String : AnyObject] = ... 

if let interests = person["interests"] as [String]{ 
    // Do something 
} 

Появляется следующее сообщение об ошибке: (String : AnyObject) is not convertible to [String]. Я не думаю, что могу привести person в [String : Any], потому что он выходит как [String : AnyObject] из рамки AFNetworking. Любые идеи были бы хорошы.

+0

Вы не говорите правду. Никто не может воспроизвести, основываясь на том, что вы показали. Покажите свой код _real_. Не вводите вручную: скопируйте и вставьте, чтобы мы увидели _exactly_ то, что вы говорите. – matt

+0

@matt. Вы можете легко воспроизвести код. Я написал в основном то, что я написал в 'Playground', и сделал снимок экрана. http://i.imgur.com/2aSAjRe.png – blee908

+0

Потому что вы не импортировали UIKit. Смотрите мой снимок экрана, который превосходит ваш скриншот! – matt

ответ

3

Обновите свой Xcode. Вы используете старую версию. До Xcode 6.1, String не рассматривался тип объекта: вы должны были использовать NSString вместо:

if let interests = person["interests"] as? [NSString] { 

Apple, фиксированный этот вопрос, так что теперь работает с Xcode 6.1:

if let interests = person["interests"] as? [String] { 

Поскольку Свифт быстро развивающийся, вам рекомендуется постоянно обновлять последнюю версию Xcode, которая на момент написания этой статьи - Xcode 6.1.1.

+0

Yup, это была моя версия Xcode – blee908