Просто обратите внимание, что оба int64_t
и long long
включены в C99 и в C ++ 0x, но не в текущей версии C ++. Таким образом, использование или делает ваш код подверженным риску быть не переносным. Реально, однако, что риск, вероятно, уже довольно низок - до такой степени, что когда / если вы портируете свой код, скорее всего, будут гораздо большие проблемы.
Если, однако, вы действительно хотите заверить против этой возможности вы можете рассмотреть возможность использования двойной точности с плавающей запятой. Вопреки распространенному мнению, типы с плавающей точкой могут представлять целые числа точно до определенного предела - этот предел устанавливается (по существу) на размер мантиссы в F.P. тип. Типичная реализация double имеет 53-битную мантиссу, поэтому вы можете представлять 53-битные целые числа с абсолютной точностью. Это поддерживает номера до 9 007 199 254 740 992 (что значительно превышает 13 из либо популярных значений «миллиард»).
Изменить
guard let data = snapshot.value as? [String :String] else { return }
на
guard let data = snapshot.value as? [String :[String:String]] else { return }
data.values.forEach {
print([111]["Latitude"])
print([111]["Longitude"])
}