Cómo convertir los datos en json de alamofire a swift objetos

hola ¡estoy haciendo un visor de fotos de la aplicación en el uso de swift swift 1.1 en
xcode 6.2

soy una teniendo problemas tratando de convertir la respuesta json de
alamofire a swift objetos.he utilizado swiftyjson biblioteca, pero parece
hay un problema de compatibilidad.aquí está mi clase de modelo

import Foundation

struct Photo {

    var name: String
    var filename :String
    var notes: String
}

aquí está mi viewController

    import UIKit

    class ImageViewerTableViewController: UITableViewController {
    var photos = [Photo]()

        override func viewDidLoad() {
            super.viewDidLoad()

Alamofire.request(.GET, "http://httpbin.org/get")
         .responseJSON { (_, _, JSON, _) in

         }

      }

¿cómo puedo mapa de json swift objetos en esta situación

gracias .

  • Lo que se devuelve como JSON en Alamofire? Si su clase vistazo a su código fuente y tratar de encontrar una manera para poner a cada valor único manualmente dentro de un diccionario.
InformationsquelleAutor user2431114 | 2015-06-15

4 Kommentare

  1. 3

    La mejor solución es utilizar AlamofireObjectMapper.

    El código debe tener este aspecto:

    import Foundation
    import ObjectMapper
    
    struct Photo: Mappable {
        var name: String
        var filename :String
        var notes: String
    
        required init?(map: Map) {}
    
        func mapping(map: Map) {
            self.name     <- map["name"]
            self.filename <- map["filename"]
            self. notes   <- map["notes"]
        }
    }

    En viewController:

    import UIKit
    
    class ImageViewerTableViewController: UITableViewController {
        var photos = [Photo]()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            Alamofire
                .request(.GET, "http://httpbin.org/get")
                .responseArray { (response: Response<[Photo], NSError>) in
                if let myPhotos = response.result.value {
                    print(myPhotos)
                }
            }
        }
    }

    Mirar la documentación de AlamofireObjectMapper y ObjectMapper para obtener más información.

  2. 2

    Puede utilizar dataUsingEncoding método, y conseguir que su name,filenameynotes variables de json objeto, y para el análisis de un objeto json recomiendo SwiftyJSON

    Alamofire.request(.GET, "http://httpbin.org/get", parameters: nil, encoding: .URL).responseString(completionHandler: {
            (request: NSURLRequest, response: NSHTTPURLResponse?, responseBody: String?, error: NSError?) -> Void in
    
            //Convert the response to NSData to handle with SwiftyJSON
            if let data = (responseBody as NSString).dataUsingEncoding(NSUTF8StringEncoding) {
                let json = JSON(data: data)
                println(json)
            }
    })
  3. 1

    Usted podría utilizar EVReflection para que. Usted puede utilizar un código como:

    var photo:Photo = Photo(json:jsonString)

    o

    var jsonString:String = photo.toJsonString()

    Usted sólo tiene que configurar su objeto base EVObject.

    Ver la página de GitHub para obtener más detallado muestra el código (incluyendo la de la matriz).

  4. 1

    Si usted no desea escribir la función de asignación, os recomiendo echar un vistazo a HandyJSON. Un ejemplo de código:

    struct Animal: HandyJSON { 
    var nombre: String? 
    var id: String? 
    var num: Int? 
    } 
    
    vamos a jsonString = "{\"nombre\":\"gato\",\"id\":\"12345\",\"num\":180}" 
    
    si vamos a los animales = JSONDeserializer.deserializeFrom(json: jsonString) { 
    de impresión(de origen animal) 
    } 
    

    Como dice:

    La característica más significativa de HandyJSON es que no requiere que los objetos heredan de NSObject(no usar KVC pero la reflexión), ni implementa un ‘mapeo’ de la función(utilice el puntero para lograr la asignación de propiedad).

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea