Возможно, я неправильно читаю вопрос, но, пытаясь прочитать в ваш вопрос, я думаю, что терминология может быть там, где требуется разъяснение;Объект vs Array
Объект имеет свойства - давайте рассмотрим объект Details ()
var msgObj = Details()
, который содержит адресную информацию для одного пользователя.Таким образом, концептуально это будет выглядеть в FireStore
users
this_user
address
city: "some city"
country: "some country"
county: "some county"
line1: "line one"
, «документы» - это элементы, хранящиеся в коллекции адресов
city: "some city"
country: "some country"
county: "some county"
line1: "line one"
, а ваш объект Details () имеет свойства, которыесоответствуют этим документам и хранят их как свойства внутри объекта;город, округ и т. д.
msgObj.city = city
msgObj.country = country
С другой стороны, массив содержит серию объектов , а не свойств.например, массив обычно , а не содержит город, страну и т. д., но он будет содержать серию объектов Details (), и каждый из этих объектов Detail () имеет свои свойства города, страны и т. д. Например, предположим, чтовы хотите работать с адресами нескольких разных пользователей - вы должны создать объект Details () для каждого пользователя, который содержит информацию об их адресе и добавить каждый из них в массив.
self.dataArry[0] = the Details() objects of one user
self.dataArry[1] = the Details() object of another user
self.dataArry[2] = the Details() object of a third user
Затем вы можете, дляНапример, отобразить пользователей в пределах определенного радиуса этого пользователя или отправить им все сообщения электронной почты и т. д.
Чтобы ответить на ваш вопрос, если вы работаете с адресной информацией одного пользователя, нет необходимости в массиве,вы можете просто сохранить его как одну переменную объекта Details () внутри класса.
class ViewController: UIViewController {
var myUserAddress = Details()
func to get this users address documents from FireStore {
if let city = msgdata["city"] as? String {
self.myUserAddress.city = city
}
if let country = msgdata["country"] as? String {
self.myUserAddress.country = country
}
//remember that the properties are only valid from here on
//as FireStore is asychronous
self.DisplayCity()
self.DisplayLocation()
}
//and then later on when you want to display those properties
func DisplayCity() {
let city = self.myUserAddress.city
print(city)
}
func DisplayLocation() {
let lon = self.myUserAddress.logitude
let lat = self.myUserAddress.latitude
//show the location on a map via lon & lat
}