【问题标题】:Populate UILabel with JSON Data and encode URL使用 JSON 数据填充 UILabel 并编码 URL
【发布时间】:2016-01-30 12:38:02
【问题描述】:

首先,我需要使用之前的 var pasarid 值对 JSON url 进行编码,然后我需要获取该 JSON 数据并填充一些 UILabel。这是我的代码。我正在使用 Alamofire 和 SwiftyJSON。

var pasarid = ""
var arrRes = [[String:AnyObject]]()


@IBOutlet weak var completo: UILabel!
@IBOutlet weak var historia: UILabel!
@IBOutlet weak var año: UILabel!
@IBOutlet weak var estilo: UILabel!
@IBOutlet weak var direccion: UILabel!
@IBOutlet weak var director: UILabel!
@IBOutlet weak var titulares: UILabel!



override func viewDidLoad() {
    super.viewDidLoad()

    Alamofire.request(.GET, "http://elpenitente.playcofrade.com/json/get_templos.php?id=(pasarid value here)").responseJSON { (responseData) -> Void in
        let swiftyJsonVar = JSON(responseData.result.value!)

        if let resData = swiftyJsonVar["templos"].arrayObject {
            self.arrRes = resData as! [[String:AnyObject]]
}

        var dict = self.arrRes
        self.completo.text = dict["nombre"]

我在最后一行显示

不能用“String”类型的索引为“[[String: AnyObject]]”类型的值下标

我的 JSON 输出是

{ "templos": [
    {
    "id": "1",
    "nombre": "S. I. Catedral Basílica de la Encarnación",
    "descripcion": "Se encuentra dentro de los límites que marcaba la desaparecida muralla árabe sobre el solar de la primitiva mezquita aljama, el lugar donde los Reyes Católicos Isabel y Fernando ordenaron erigir un templo cristiano a los pocos días de conquistar la ciudad en 1487.\r\n\r\nSe caracteriza por tener una de las dos torres incompleta, popularmente haciendolo llamar entre los malagueños como la \"manquita\".",
    "antiguedad": "1782",
    "estilo": "Arquitectura Renacentista",
    "calle": "Calle Molina Lario, 9, 29015",
    "latitud": "36.7201678",
    "longitud": "-4.419310600000017",
    "director": "Sr. Obispo, Mons. Jesús Catalá Ibáñez",
    "titulares": "En el Sagrario de la Santa Iglesia Catedral se encuentra el Santísimo Cristo Mutilado.",
    "horario": "Santa Iglesia Catedral:\r\n\r\n · Horarios de apertura\r\n -De lunes a viernes: de 9 a 19 h.\r\n -Sábados: de 9 a 20 h.\r\n -Domingos: de 8:30 a 20 h.\r\n\r\n · Misas\r\n -De lunes a sábado: 9:15 h. con rezo de Laudes\r\n -Vísperas de domingos y de festivos: 19 h.\r\n -Domingos y festivos: 9, 10, 11:30, 13 y 19 h.\r\n\r\n · Confesiones\r\n -Media hora antes de cada misa\r\n    -Visitas concertadas en taquilla\r\n    De lunes a viernes: de 10 a 18 h.\r\n    Sábados: de 10 a 17 h.\r\n    -Visitas no concertadas\r\n    Domingos: de 14 a 18 h.\r\n\r\nSagrario de la Catedral:\r\n\r\n · Horarios de apertura\r\n -De lunes a viernes: de 10:15 a 12:15 h. y de 18 a 19 h.\r\n -Sábados: de 10:15 a 12:15 h.\r\n -Domingos: de 9:30 a 13:30 h.\r\n\r\n · Misas\r\n -De lunes a viernes: 10:30, 11:30 y 18:30 h.\r\n -Sábados: 10:30 y 11:30 h.\r\n \r\n · Confesiones\r\n -Media hora antes de cada misa\r\n\r\n · Bodas\r\n -Sábados por la tarde\r\n\r\n · Visitas no concertadas\r\n -Domingos: de 9:30 a 13:30 h."
    }
    ],
    "success": 1
    }

【问题讨论】:

  • 你已经陈述了你的目标,并发布了一些代码。那么你的代码有什么问题?它怎么不符合你的目标?编译失败了吗?运行时崩溃?给出错误的结果?具体一点。
  • 已更新,感谢您的建议@DuncanC​​pan>
  • arrRes 是一个字典数组,但随后您执行var dict = self.arrRes 并尝试像访问字典一样访问它。这是你的问题。
  • 它是因为您的arrRes 是一个字典数组,因此您无法使用键值访问它
  • 你可以给你发帖JSON

标签: ios json swift


【解决方案1】:

您可以简单地使用 json 结果并将您的标签填充为:

    Alamofire.request(.GET, "http://elpenitente.playcofrade.com/json/get_templos.php?id=(pasarid value here)").responseJSON { (responseData) -> Void in
            let swiftyJsonVar = JSON(responseData.result.value!)

            if let resData = swiftyJsonVar["templos"].array {
               self.completo.text = resDate[0]["nombre"].string
             }
})

【讨论】:

  • 什么网址我在您的问题中没有看到任何网址?
  • 我从中获取 JSON 的那个
  • 不知道怎么弄
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
相关资源
最近更新 更多