Kocham to dziwactwo w Swift (NOT).
To jedna z najmniej intuicyjnych gier języka, który znam. Tak więc okazuje się, że gdy otrzymasz słownik z typem AnyObject, Ints, Doubles, Floats, NIE są przechowywane jako rodzime typy Swift. Są przechowywane jako ... niespodzianka! NSNumber.
Co prowadzi do wielu niezrozumiałych zachowań, na przykład sprawdzanie typu AnyObjects, aby sprawdzić, czy masz podwójne lub int (nie można tego zrobić).
Z tego samego powodu Twój kod nie działa. Zmień go na adres:
let ddd = oneJson["restaurantId"] as! Int
print("ddd = \(ddd)")
let restaurantId = (oneJson["restaurantId"] as? NSNumber)?.longLongValue
I przypomnieć sobie jeszcze raz i jeszcze raz, że gdy jest to AnyObject jesteś odlewania z Swift ukrywa od ciebie fakt, że robi odlew z NSNumber Swift typów bazowych, i że w prawda, wciąż są po prostu NSNumbers.
Nie wiem, co jest przyczyną tego problemu (stąd komentarz), ale spróbuj użyć '(oneJson [" restaurantId "] jako! NSString) .longLongValue', co da wartość z typem' Int64' – Jojodmo