2017-01-17 6 views
0

У меня есть этот массив, и я выкладываю его бакэнд, но получил действительно путает со всей отливкойSwift 2: Как обратное приведение массива объектов

valuesDictionary=["medication": Optional("Novocain"), "dateOfBirth": Optional(2001- 01-01 00:00:00 +0000), "lastName": Optional("Berthold"), "allergies":  Optional("Heuschnupfen"), "firstName": Optional("Alexander"), "Blutgruppe": Optional("A"), "PostalAddress": Optional(Eureka.PostalAddress(street: Optional("Gleimstraße"), state: nil, postalCode: Optional("10123"), city: Optional("Berlin"), country: Optional("DE")))] 

пытается кормить его в:

let request = Alamofire.request(.POST, Config.profileUpdate, parameters: valuesDictionary , encoding: .JSON) 

Я пробовал разные вещи, как:

let valuesDictionary = form.values() as! [String:AnyObject] 

на обратное приведение в ожидаемой форме, но это только с указанием:

fatal error: can't unsafeBitCast between types of different sizes 
+1

Не могли бы вы высказать некоторые ошибки и получить их? –

+0

если я попытаюсь скрыть это так: let valuesDictionary = form.values ​​() as! [String: AnyObject] Я получаю: фатальная ошибка: не может небезопасноBitCast между типами разных размеров – goran

+0

как ваши значения объявлены? Как объявляются формы? –

ответ

1

Возможные варианты: AnyObject, так как Optional является enum (тип значения). Вам нужно развернуть свои опции, прежде чем вставлять их в словарь.

+0

я пробовал вот так: let valuesDictionary = form.values ​​() , если не распаковать = valuesDictionary { print (unrapped) } just get: Инициализатор условной привязки должен иметь необязательный тип, а не '[String: Any?]' – goran

+0

это работает для одиночных завернутых значений, нет шансов избавиться от всех опций в массиве сразу? – goran

+1

Карта была правильной для использования здесь, но, к сожалению, вызов карты в словаре возвращает массив (ключ, значение) кортежей, а не фактический словарь. Вы можете вручную создать новый канал в цикле for, развернув все значения вашего существующего dict – Alexander

1

У меня было какое-то безумное происшествие со значениями, которые я хотел бросить в Firebase. Я закончил тем, что нашел, где они изначально уклонились от своих ожиданий, и исправил это.

Если вы заявили что-то, отличное от того, что вы хотите, чтобы получить конечный результат, сделайте это окончательным результатом. В этом случае везде, где он объявлен как нечто иное, чем объект, сделайте его объектом.

Это больше работы, но это сэкономит вам некоторое время в конце.

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

  • Нет связанных вопросов^_^