swiftyjson parse for data ios json swift xcode6

ios - parse - Ejemplo de manejo de JSON con SwiftyJSON



swiftyjson decode (5)

Me gustaría manejar a json con SwiftJSON, pero apilé. ¿Alguien me muestra código de ejemplo?

Intenté utilizar esta biblioteca. https://github.com/SwiftyJSON/SwiftyJSON

Aunque coloqué SwiftyJSON.swift en el mismo proyecto, tengo el error "No hay tal módulo" SwiftyJSON "" Así que corrija mi código o muéstrame el código de código de json de la web con swiftyJSON lib.

Aquí está mi código:

import UIKit import SwiftyJSON // No such module "SwiftyJSON" class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let url = NSURL(string: "http://express.heartrails.com/api/json?method=getPrefectures") var request = NSURLRequest(URL: url!) var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) var json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSDictionary var hoge = JSON(data) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

Aquí está mi captura de Xcode


Api.swift

import UIKit extension NSMutableData { func appendString(string: String) { let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) appendData(data!) } } class Api: NSObject, NSXMLParserDelegate { func CallGetApi(str: String ) -> JSON { let url = NSURL(string: "http://"+str) let request = NSURLRequest(URL: url!) let data = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) if data != nil { let dataDict = JSON(data: data!) return dataDict } return JSON(integerLiteral:5) } func isConnectedToNetwork() -> Bool { var Status:Bool = false let url = NSURL(string: "http://google.com/") let request = NSURLRequest(URL: url!) let data = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) if data != nil { Status = true } return Status } func CallPostApi(urlStr: String , postStr: String ) -> JSON { print(postStr) let link = "http://"+urlStr print("/(link)/?/(postStr)") let url = NSURL(string: link); let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData let request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 10.0) request.HTTPMethod = "POST"; request.HTTPBody = postStr.dataUsingEncoding(NSUTF8StringEncoding); if let data = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) { let dataDict = JSON(data: data) print(dataDict) return dataDict } if self.isConnectedToNetwork() == false { return JSON(integerLiteral:6) } return JSON(integerLiteral:5) } func CallUpdatePictures(urlStr: String , parameters: [String: String]?, pics: Array<UIImage> ) -> JSON { let link = "http://"+urlStr let url = NSURL(string: link); let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData let request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 50.0) print(link) request.HTTPMethod = "POST" let boundary:String = "---------------------------14737809831466499882746641449" request.addValue("multipart/form-data; boundary=/(boundary)", forHTTPHeaderField: "Content-Type") let body:NSMutableData = NSMutableData() if parameters != nil { for (key, value) in parameters! { body.appendString("--/(boundary)/r/n") body.appendString("Content-Disposition: form-data; name=/"/(key)/"/r/n/r/n") body.appendString("/(value)/r/n") } } var i:Int = 1 for pic in pics { let img:UIImage = self.resizeImage(pic, maxHeight: 216, maxWidth: 384) let imageData = UIImagePNGRepresentation(img) //let imageData = UIImageJPEGRepresentation(img, 1.0) if imageData != nil { body.appendString("--/(boundary)/r/n") body.appendString("Content-Disposition: form-data; name=/"image/(i)/"; filename=/"image.png/"/r/n") body.appendString("Content-Type: image/png/r/n/r/n") body.appendData(imageData!) body.appendString("/r/n") i=i+1 } } body.appendString("--/(boundary)--/r/n") request.setValue("/(body.length)", forHTTPHeaderField:"Content-Length") request.HTTPBody = body if let data = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) { let dataDict = JSON(data: data) print(dataDict) return dataDict } if self.isConnectedToNetwork() == false { return JSON(integerLiteral:6) } return JSON(integerLiteral:5) } func CallUpdatePicture(urlStr: String , parameters: [String: String]?, pic: UIImageView ) -> JSON { let link = "http://"+urlStr let url = NSURL(string: link); let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData let request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 50.0) request.HTTPMethod = "POST" let boundary:String = "---------------------------14737809831466499882746641449" request.addValue("multipart/form-data; boundary=/(boundary)", forHTTPHeaderField: "Content-Type") let body:NSMutableData = NSMutableData() if parameters != nil { for (key, value) in parameters! { body.appendString("--/(boundary)/r/n") body.appendString("Content-Disposition: form-data; name=/"/(key)/"/r/n/r/n") body.appendString("/(value)/r/n") } } if pic.image != nil { let img:UIImage = self.resizeImage(pic.image!, maxHeight: 200, maxWidth: 200) let imageData = UIImagePNGRepresentation(img) if imageData != nil { body.appendString("--/(boundary)/r/n") body.appendString("Content-Disposition: form-data; name=/"image/"; filename=/"image.png/"/r/n") body.appendString("Content-Type: image/png/r/n/r/n") body.appendData(imageData!) body.appendString("/r/n") } } body.appendString("--/(boundary)--/r/n") request.setValue("/(body.length)", forHTTPHeaderField:"Content-Length") request.HTTPBody = body if let data = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) { let dataDict = JSON(data: data) print(dataDict) return dataDict } if self.isConnectedToNetwork() == false { return JSON(integerLiteral:6) } return JSON(integerLiteral:5) } func resizeImage(image:UIImage, maxHeight:Float, maxWidth:Float) -> UIImage { var actualHeight:Float = Float(image.size.height) var actualWidth:Float = Float(image.size.width) var imgRatio:Float = actualWidth/actualHeight let maxRatio:Float = maxWidth/maxHeight if (actualHeight > maxHeight) || (actualWidth > maxWidth) { if(imgRatio < maxRatio) { imgRatio = maxHeight / actualHeight; actualWidth = imgRatio * actualWidth; actualHeight = maxHeight; } else if(imgRatio > maxRatio) { imgRatio = maxWidth / actualWidth; actualHeight = imgRatio * actualHeight; actualWidth = maxWidth; } else { actualHeight = maxHeight; actualWidth = maxWidth; } } let rect:CGRect = CGRectMake(0.0, 0.0, CGFloat(actualWidth) , CGFloat(actualHeight) ) UIGraphicsBeginImageContext(rect.size) image.drawInRect(rect) let img:UIImage = UIGraphicsGetImageFromCurrentImageContext()! let imageData:NSData = UIImageJPEGRepresentation(img, 1.0)! UIGraphicsEndImageContext() return UIImage(data: imageData)! } }

Objeto de clase api:

var ApiObj = Api()

inicio de sesión de llamada de API:

let postString = "uid=/(Email_Txt.text!)&pwd=/(Password_Txt.text!)" var dataDict=ApiObj.CallPostApi("user/login", postStr: postString) if (dataDict.null == nil) { if dataDict == 6 { msg = "Network not available" } else if dataDict.object.objectForKey("token") != nil { msg = "Successfull login " } else if dataDict.object.objectForKey("err") != nil { msg = "Invalid email or password" } }


El problema que he tenido no es seguir esta parte de las instrucciones de CocoaPods :

Asegúrese de abrir siempre el espacio de trabajo de Xcode en lugar del archivo de proyecto al crear su proyecto

Estaba abriendo el proyecto en lugar del área de trabajo que resultó en el error No Such Module.

Esto desapareció después de abrir el espacio de trabajo.



Si agregó SwiftyJSON.swift a su proyecto, no necesita import . Ya está disponible.

Tratar:

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let url = NSURL(string: "http://express.heartrails.com/api/json?method=getPrefectures") var request = NSURLRequest(URL: url!) var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) if data != nil { var hoge = JSON(data: data!) println(hoge) } } }


Utilice esta https://github.com/SwiftyJSON/SwiftyJSON versión para obtener SwiftyJSON actualizado

Si desea utilizar la import SwiftyJSON , debe agregar el uso de pod para hacer esto, siga los pasos

  1. Abra el terminal y ejecute sudo gem install cocoapods para instalar cocoapods
  2. Desde tu terminal, ve a tu proyecto inicio.
  3. Ejecutar pod init para inicializar Podfile
  4. Abre Podfile y pega el siguiente comando

platform :ios, ''8.0'' use_frameworks! target ''MyApp'' do pod ''SwiftyJSON'', ''~> 2.2.1'' end

  1. Finalmente, ejecute pod install y agregará SwiftyJSON a su proyecto
  2. Cierre xcode y abra .xcworkspace lugar de .xcodeproj

Ahora eres bueno para ir

Para más información, SwiftyJSON en cocoapods.