2 Replies
      Latest reply: Dec 13, 2016 7:20 AM by eskimo RSS
      sleyterach Level 1 Level 1 (0 points)

        Hello everyone!

        I have a problem, when I run my app in iOS Simulator and I get the following error, but when I run the same code in my iPhone, I don't get the error. (I call a function closeTaskService in line 42)

         

        Please help me!!

        • Re: EXC_BAD_INSTRUCTION
          sleyterach Level 1 Level 1 (0 points)

          I use Xcode 8; and the error is: "Thread 1: EXC_BAD_INSTRUCTION (code=EXC_l386_INVOP, subcode=0x0)"; I get a error in lines 34 and 83 ....

           

          import UIKit
          import Charts
          class HomeViewController: UIViewController {
              
              
              @IBOutlet weak var pieChart: PieChartView!
              @IBOutlet weak var barChart: BarChartView!
              @IBOutlet weak var menuButton: UIBarButtonItem!
              
              @IBOutlet weak var lblContado: UILabel!
              @IBOutlet weak var lblCredito: UILabel!
              
              let dato = NSUserDefaults()
              
              let typeCredit = ["Crédito", "Contado"]
              
              
              private var monto:[Double] = []
              
              
              override func viewDidLoad() {
                  super.viewDidLoad()
                  
                  UINavigationBar.appearance().tintColor = UIColor.whiteColor()
                  UINavigationBar.appearance().barStyle = .Black
                  UINavigationBar.appearance().backgroundColor = UIColor(red: 61.0/255.0, green: 205.0/255.0, blue: 135.0/255.0, alpha:1)
                  
                  if self.revealViewController() != nil {
                      menuButton.target = self.revealViewController()
                      menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
                      self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
                  }
                  
                  self.closeTaskService("1", completionHandler: { (response) -> () in
                      print(response)
                  })
                  self.closeTaskService("2", completionHandler: { (response) -> () in
                      print(response)
                  })
                  
                  / 
                  let cont = self.dato.objectForKey("Contado")
                  let monCon = cont as AnyObject? as? String
                  let valCont:String = (monCon as AnyObject? as? String)!
                  print("monto contado: "+String(valCont))
                  let conValue = atoi(String(valCont))
                  
                  / 
                  let cred = self.dato.objectForKey("Credito")
                  let monCred = cred as AnyObject? as? String
                  let valCred:String = (monCred as AnyObject? as? String)!
                  print("monto credito: "+String(valCred))
                  let credValue = atoi(String(valCred))
                  
                  / 
                  self.lblContado.text = "¢"+valCont
                  self.lblContado.textColor = UIColor.whiteColor()
                  self.lblContado.font = lblContado.font.fontWithSize(16)
                  self.lblContado.textAlignment = NSTextAlignment.Right
                  
                  
                  self.lblCredito.text = "¢"+valCred
                  self.lblCredito.textColor = UIColor.whiteColor()
                  self.lblCredito.font = lblContado.font.fontWithSize(16)
                  self.lblCredito.textAlignment = NSTextAlignment.Right
                  
                  / 
                  setChart(typeCredit, values: [conValue,credValue])
              }
              
              func atoi (valor: String)->Double{
                  / 
                  let value = (valor as NSString).doubleValue
                  / 
                  return value
              }
              
              func closeTaskService(tipo: String, completionHandler: (response:NSString) -> ()) {
                  let fecha = getCurrentDay()
                  let request = NSMutableURLRequest(URL: NSURL(string: "http:/ 
                  let db = self.dato.objectForKey("dbName")
                  let db1 = db as AnyObject? as? String
                  let dbName : String = (db1 as AnyObject? as? String)!
                  print(dbName)
                  request.HTTPMethod = "POST"
                  let postParams = "fecha="+fecha+"&"+"DB_name="+dbName+"&"+"tipo="+tipo
                  print(postParams)
                  request.HTTPBody = postParams.dataUsingEncoding(NSUTF8StringEncoding)
                  let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                      data, response, error in
                      / 
                      let responseString: NSString = NSString(data: data!, encoding: NSUTF8StringEncoding)!
                      / 
                      switch tipo{
                          
                          case "1":
                              print("Entre al 1")
                              self.dato.setValue(responseString as String, forKey: "Contado")
                              print(self.dato.objectForKey("Contado"))
                          case "2":
                              print("Entre al 2")
                              self.dato.setValue(responseString as String, forKey: "Credito")
                              print(self.dato.objectForKey("Credito"))
                          default:
                              self.dato.setValue("0", forKey: "Contado")
                              self.dato.setValue("0", forKey: "Credito")
                      }
                  }
                  task.resume()
              }
              
              func getCurrentDay ()->String{
                  let todaysDate:NSDate = NSDate()
                  let dateFormatter:NSDateFormatter = NSDateFormatter()
                  dateFormatter.dateFormat = "yyyy/MM/dd"
                  let todayString:String = dateFormatter.stringFromDate(todaysDate)
                  / 
                  return todayString
              }
              
              func setChart(dataPoints: [String], values: [Double]){
                  var dataEntries: [ChartDataEntry] = []
                  
                  for i in 0..<dataPoints.count {
                      let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
                      dataEntries.append(dataEntry)
                  }
                  
                  let pieChartDataSet = PieChartDataSet(yVals: dataEntries, label: "")
                  let pieChartData = PieChartData(xVals: dataPoints, dataSet: pieChartDataSet)
                  pieChart.data = pieChartData
                  
                  var colors: [UIColor] = []
                  
                  for _ in 0..<dataPoints.count {
                      let red = Double(arc4random_uniform(256))
                      let green = Double(arc4random_uniform(256))
                      let blue = Double(arc4random_uniform(256))
                      
                      let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1)
                      colors.append(color)
                  }
                  pieChartDataSet.colors = colors
              }
              
          }
          
          • Re: EXC_BAD_INSTRUCTION
            eskimo Apple Staff Apple Staff (7,550 points)

            In the context of Swift code an EXC_BAD_INSTRUCTION machine exception usually means that you’ve tripped over one of Swift’s safety checks.  I posted some background to this on another thread.

            Share and Enjoy

            Quinn “The Eskimo!”
            Apple Developer Relations, Developer Technical Support, Core OS/Hardware
            let myEmail = "eskimo" + "1" + "@apple.com"