file di progetto:
https://jumpshare.com/v/Otai3BBXYwfvyz8jb53kdinamicamente generare cellule UITableView e Headrs
(sarebbe saggio per vedere questi per vedere la struttura del progetto)
Problema:
Ok, quindi io sono dopo un tutorial che crea un UITableView con intestazioni e quindi contenuto di celle.
Il codice ha funzionato e funziona bene, ora voglio estendere oltre questo tutorial e caricare dinamicamente quel contenuto usando alamofire e SwiftyJSON.
Nel tutorial, il codice utilizzato è in questo modo:
func getSectionsFromData() -> [Sections] {
var sectionsArray = [Sections]()
let animals = Sections(title: "Animals", objects: ["Cats", "Dogs", "Birds", "Lions"])
sectionsArray.append(animals)
return sectionsArray
}
Quello che ho cercato di fare è stato:
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
for (_, subJson) in json {
for (year, content) in subJson {
let title = year
let objects = content
sectionsArray.append(Sections(title: title, objects: objects))
}
}
}
case .Failure(let error):
print(error)
}
}
Se stampare i risultati che mostrano nella console - così ho sapere come funziona il looping del JSON. Ho poi aggiunto a
let title = year
let objects = content
sectionsArray.append(Sections(title: title, objects: objects))
Ma su questa linea:
sectionsArray.append(Sections(title: title, objects: objects))
ottengo questo errore:
cannot convert value of type 'JSON' to expected argument type '[String]'
Ecco il JSON che sto usando:
{"posts": [
{
"Category1": [
"Post1cat1"
],
"Category2": [
"Post1cat2",
"Post2cat2"
]
}
]}
Qualcuno può aiutarmi? Qui potrei andare nella direzione sbagliata. Voglio passare in rassegna il JSON e visualizzare le categorie come intestazioni e i post in una cella di un tavolo.
edit: 1/29/2016
così, ho cambiato il loop:
for (_, subJson) in json {
for (index, data) in subJson {
for (title, objects) in data {
sectionsArray.append(Sections(title: title, objects: objects.self.arrayValue.map { $0.string!}))
}
}
}
Ancora nessuna fortuna. Quando aggiungo in alcune stampe (sotto: sectionsArray.append) per verificare se ci sono dati:
print("--")
print(title)
print(objects.self.arrayValue.map { $0.string!})
print(Sections(title: title, objects: objects.self.arrayValue.map { $0.string!}))
ottengo questo risultato nella console:
--
Category1
["Post1cat1"]
Sections(headings: "Category1", items: ["Post1cat1"])
--
Category2
["Post1cat2", "Post2cat2"]
Sections(headings: "Category2", items: ["Post1cat2", "Post2cat2"])
che dimostra che le informazioni sono lì, tuttavia quando eseguo l'app non ci sono ancora risultati, ma JSON ha solo la sezione e le celle originariamente definite sopra.
Il problema non era con l'analisi, funzionava bene. il problema era farli visualizzare in lui tableview. non si sta aggiornando. – MarkP
Si prega di provare anche la parte dopo il titolo UPDATE.'Funziona per me' :) –