Используйте autoId из массива, чтобы получить данные Firebase, сохранить в другой массив, а затем использовать позже - PullRequest
1 голос
/ 04 апреля 2019

У меня есть массив, который всегда будет иметь 4 разных идентификатора autoId (он выбирает 4 случайным образом из узла в firebase) - это randomKeyArray, показанный на рисунке:

image of array]

Я хотел бы использовать autoID из randomKeyArray, чтобы получить дополнительную информацию из firebase (полное имя пользователя и profileImageUrl), установить их в отдельных массивах (names, profileImages и namesWithUrl), чтобы я мог использовать их позже.

Я бы хотел, чтобы randomKeyArray [0] соответствовал именам [0], profileImages [0], namesWithUrl [0] и таким же образом с 1,2,3 и т. Д.

В данный момент массивы names, profileImages и namesWithUrl пусты, и я не уверен, почему - буду признателен за любую помощь:)

// the arrays are stored outside the viewDidLoad
var randomKeyArray = [String]()
var names = [String]()
var profileImages = [String]()
var namesWithUrl = [String : String]()

//EDIT: this for loop is where i get the random autoId's for the myKeyArray
for _ in 0...3 { //will iterate four times
    let count = self.myKeyArray.count //get the number of elements
    let randomInt = Int.random(in: 0..<count) //get a random index for the array
    let randomUserKey = self.myKeyArray[randomInt]
    self.randomKeyArray.append(randomUserKey)
    self.myKeyArray.remove(at: randomInt) //remove that object so it's not selected again              
}

print(self.myKeyArray)

//for loop is inside a function    
for i in 0..<self.randomKeyArray.count {
     let thisUserKey = self.randomKeyArray[i]
     self.ref.child("users").child(thisUserKey).observeSingleEvent(of: .value, with: { snapshot in
          let name = snapshot.childSnapshot(forPath: "fullname").value as! String
          let profileImageUrl = snapshot.childSnapshot(forPath: "profileImageUrl").value as! String
          self.names.append(name)
          self.profileImages.append(profileImageUrl)
          self.namesWithUrl[name] = profileImageUrl
          //self.currIds.append(self.randomKeyArray)
     })
 }

Дайте мне знать, если вам нужна дополнительная информация!

EDIT:

Я добавил цикл for, который я получаю autoId для randomKeyArray - я также пытался получить имя и изображение профиля, когда randomUserKey вызывается в первом цикле for, но массивы по-прежнему показывают 0 значений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...