how to convert anyObject to Int32

0

I need to convert a anyObject that comes from a JSON of a web service to Int32 I have tried in many ways but none of them have happened to me. The last one I have is this:

let puntos = "\(objeto["CATPUNTOS"])" as? NSString
cat.catPuntos = Int32(String(puntos!))!

where cat is an object, when executing it I get this error on the second line

  

"fatal error: unexpectedly found nil while unwrapping an Optional   value "EXC_BAD_INSTRUCTION (code: exc_1386_invop)

    
asked by Juan David Gil 25.05.2016 в 23:49
source

2 answers

0

// SYNCHRONY OF CATEGORIES             let dir = Helpers.REQUESTAPIURL + "/ synchronizeCategoriesApp? userID = (userID!)"             let url: NSURL = NSURL (string: dir)!             let session = NSURLSession.sharedSession ()             let request = NSMutableURLRequest (URL: url)             let task = session.dataTaskWithRequest (request, completionHandler: {data, response, error -> Void in                 if (error! = nil) {                     print (error! .localizedDescription)                 }                 else {                     let nsdata: NSData = NSData (data: data!)

                if(nsdata != ""){

                    do{
                        let json = try NSJSONSerialization.JSONObjectWithData(nsdata, options: NSJSONReadingOptions.MutableContainers)
                        let arregloJsonList = json["categorias"] as? NSArray

                        if let nsArrayJsonList = arregloJsonList {
                            nsArrayJsonList.enumerateObjectsUsingBlock({objeto, index, stop in

                                var datos: NSMutableArray = NSMutableArray()
                                self.idCat = "\(objeto["catId"])" as? NSString
                                datos = ModeloBD.getInstance().findCategoriaByExternalId(String(self.idCat!))
                                var cat:CategoriaData = CategoriaData()
                                if datos.count > 0{
                                    cat = datos.objectAtIndex(0) as! CategoriaData
                                }
                                if cat.id == 0{
                                    if objeto["catOperacion"] as? String == "I"{
                                       print("aqui: \(objeto["CATNOMBRE"] as! String)")
                                        cat.externalId = Int32(self.idCat! as String)!
                                        cat.catNombre = objeto["CATNOMBRE"] as! String
                                        cat.catPuntos = ("\(objeto["CATPUNTOS"])" as? NSString)!.intValue
                                        cat.catEstado = ("\(objeto["CATESTADO"])" as? NSString)!.intValue
                                        cat.catVersion = ("\(objeto["CATVERSION"])" as? NSString)!.intValue
                                        cat.catOperacion = String(objeto["CATOPERACION"])

                                        ModeloBD.getInstance().registrarCategoria(cat)
                                    }
                                }
                                else{
                                    if cat.catVersion < objeto["catVersion"] as? Int32{
                                        if objeto["catOperacion"] as? String == "U"{
                                            ModeloBD.getInstance().updateCategoria(cat)
                                        }
                                        else if objeto["catOperacion"] as? String == "D"{
                                             ModeloBD.getInstance().removeCategoria(String(self.idCat))
                                        }
                                    }
                                }

                            })
                        }

                    }catch{
                        self.msn = "Error al serealizar JSON"

                        dispatch_async(dispatch_get_main_queue()) {
                            self.mostrarAlert()
                        }

                    }

                }
                else{
                    self.msn = "Error, al sincronizar"

                    dispatch_async(dispatch_get_main_queue()) {
                        self.mostrarAlert()
                    }

                }
            }
        })
        task.resume()
    
answered by 26.05.2016 в 00:47
0

You must ensure that the "Object" that you have as AnyObject is a data structure so that you can ask for the value of the key "CATCHES" and that String convert it to Number.

if let obj = objeto as? [NSObject: AnyObject] {

    if let puntos = obj["CATPUNTOS"] as? String {

        cat.catPuntos = Int32(puntos) ?? 0
    }else{
        cat.catPuntos = 0;
    }
}

You can also use link to save some validations

    
answered by 26.07.2016 в 22:53