отображать массив в метке в swift - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы, чтобы два объекта отображали данные, полученные от Parse в быстрой форме.Я попытался использовать метку таким образом, но он отображает только последний элемент в объекте.Пожалуйста, как мне сделать так, чтобы он отображал все элементы объекта в метке.Как один элемент на одну метку.Спасибо

 let query = PFQuery(className: "Questionnaire")
 query.findObjectsInBackground { (objects, error) -> Void in
    if error == nil {

     // There were no errors in the fetch
        if let returnedObjects = objects {
     // var text = ""
     // Objects Array is not nil
     // loop through the array to get each object

             for object in returnedObjects {
                 print(object["question"] as! String)
                 // text.append(object["question"] as! String)
                self.Label.text = (object["question"] as! String)


             }


        }
    }
 }

Ответы [ 4 ]

0 голосов
/ 11 мая 2018

Вы можете сделать в одну строку , как это, и объединить все question с , разделителем, вы можете изменить разделитель на любой (empty, -,...etc)

if let returnedObjects = returnedObjects {
    self.Label.text = returnedObjects.map {($0["question"] as? String) ?? nil}.compactMap({$0}).joined(separator: ",")
}
0 голосов
/ 11 мая 2018

Если важно использовать UILabel

var concatenatedString = ""

for object in returnedObjects {

    concatenatedString += object["question"] as! String
}

self.Label.text = concatenatedString
0 голосов
/ 11 мая 2018

Вы просматриваете массив и устанавливаете каждое значение на Label.text.Однако установка Label.text заменит то, что было на этикетке раньше.Вот почему вы видите только последний элемент.

Одним из решений является отображение строкового представления массива:

self.Label.text = "\(object)"

Другим решением является отображение элементов в табличном представлении, которое имеет Суганья Марлинпредложил.Вам нужно будет соответствовать UITableViewDatasource и применять различные методы.Вот руководство .

0 голосов
/ 11 мая 2018

Используйте для этого таблицу.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! YouTableViewCell 
        cell.textLabel.text = yourArray[indexpath.row] as? String ?? ""          
        return cell

}
...