Popular View with JSON

2

I use a library called Alamofire-SwiftyJSON to make a request JSON .

Example call:

Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
         .responseSwiftyJSON({ (request, response, json, error) in
                     println(json)
                     println(error)
 })

This url is just an example, the return of my JSON is like this:

JSON return example:

{
   "titulo1": "Silvio Santos Ipsum",
   "texto1": "Ma vai pra lá. Ma vai pra lá. Ma você, topa ou não topamm. O prêmio é em barras de ouro, que vale mais que dinheiroam. Ma vejam só, vejam só. Mah você não consegue né Moisés?",
   "url1": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url2": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url3": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "titulo2": "Patríciaaammmm... Luiz Ricardouaaammmmmm.",
   "texto2": "É namoro ou amizadeemm? Ma vale dérreaisam? Você veio da caravana de ondeammm? Ma não existem mulher feiam, existem mulher que não conhece os produtos Jequitiamm. Um, dois três, quatro, PIM, entendeuam? Patríciaaammmm... Luiz Ricardouaaammmmmm. O Raul Gil é gayam! ... Maa O Ah Ae! Ih Ih! O Raul Gil é gayamm! Mah é a porta da esperançaam."
}

I will always follow the Pattern:

  • title + number
  • text + number

And sometimes:

  • url + number.

How can I view my view with this information?

    
asked by anonymous 01.12.2015 / 13:09

2 answers

2

I agree with @JefersonAssis's response that you should return a Json in array format.

I also agree with @ Otávio's comment, you should use a UITableView and a CustomCell.

But if you'd rather use that approach, you'd have to create something like this:

var i = 1
while true {
    i = i + 1
    if let titulo = json["titulo" + i] {
           //cria uma view dinamicamente
           var view=UIView(frame: CGRectMake(100, 200 * i, 100, 100))

           //cria os labels dinamicamente e adiciona na view
           var label = UILabel(frame: CGRectMake(0, 10, 200, 21))
           label.center = CGPointMake(160, 284)
           label.textAlignment = NSTextAlignment.Center
           label.text = titulo
           view.addSubview(label) 

           //se tem título é certo que tem texto?
           if let texto = json["texto" + i] {
               var label = UILabel(frame: CGRectMake(0, 20, 200, 21))
               label.center = CGPointMake(160, 284)
               label.textAlignment = NSTextAlignment.Center
               label.text = texto
               view.addSubview(label) 
           }
           //e assim por diante com os outros dados do array
           //adiciona a view criada na Subview principal, ou em uma view com IBOutlet que você tenha criado pelo MainStoryBoard
           self.view.addSubview(view)
   }
   else {
      //se não tem a propriedade com o número de "i", então deve sair do loop
      break
   }

}
    
03.12.2015 / 18:29
1

First you need to correct your return, today it is returning an object and instead of a array containing several objects

Instead of this return:

{
   "titulo1": "Silvio Santos Ipsum",
   "texto1": "Ma vai pra lá. Ma vai pra lá. Ma você, topa ou não topamm. O prêmio é em barras de ouro, que vale mais que dinheiroam. Ma vejam só, vejam só. Mah você não consegue né Moisés?",
   "url1": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url2": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url3": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "titulo2": "Patríciaaammmm... Luiz Ricardouaaammmmmm.",
   "texto2": "É namoro ou amizadeemm? Ma vale dérreaisam? Você veio da caravana de ondeammm? Ma não existem mulher feiam, existem mulher que não conhece os produtos Jequitiamm. Um, dois três, quatro, PIM, entendeuam? Patríciaaammmm... Luiz Ricardouaaammmmmm. O Raul Gil é gayam! ... Maa O Ah Ae! Ih Ih! O Raul Gil é gayamm! Mah é a porta da esperançaam."
}

Change to something like this:

[{
   "titulo": "Silvio Santos Ipsum",
   "texto": "Ma vai pra lá. Ma vai pra lá. Ma você, topa ou não topamm. O prêmio é em barras de ouro, que vale mais que dinheiroam. Ma vejam só, vejam só. Mah você não consegue né Moisés?",
   "url1": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url2": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg",
   "url3": "http://lorempixel.com/image_output/abstract-q-g-263-221-3.jpg"
},
{
   "titulo": "Patríciaaammmm... Luiz Ricardouaaammmmmm.",
   "texto": "É namoro ou amizadeemm? Ma vale dérreaisam? Você veio da caravana de ondeammm? Ma não existem mulher feiam, existem mulher que não conhece os produtos Jequitiamm. Um, dois três, quatro, PIM, entendeuam? Patríciaaammmm... Luiz Ricardouaaammmmmm. O Raul Gil é gayam! ... Maa O Ah Ae! Ih Ih! O Raul Gil é gayamm! Mah é a porta da esperançaam."
}]

To populate your view , if you are using IBOutlet just call it this way:

if let JSON = response.result.value {
    labelTitulo?.text = JSON[0]!["titulo"]
}

In the example above, I always put index 0 of array , but you can do the looping and suit your need

    
02.12.2015 / 17:46