La actualización de Xcode 6.3 hace que falle la aplicación de trabajo: lo que funcionaba ahora no funciona

No sé si alguien más ha experimentado esto, pero tengo una aplicación que estoy creando y funcionaba bien. Luego estúpidamente permití a mac instalar y actualizar xcode . Lo siguiente que sé es que abro el proyecto y la construcción falla con 21 errores. He arreglado 20 de ellos. Incidentalmente, cualquier persona que encuentre este problema con errores de PF_Nullability , compruebe esto .

Eso funcionó para 20 errores, pero el último está en una function que funcionaba correctamente. En esta function, busco una class de datos en parse.com y obtengo un object aleatorio para poblar variables en mi view controller/app/whatevers . Estoy poniendo la function a continuación para que puedas ver todo, pero esta es la línea errónea:

  countQuery.countObjectsInBackgroundWithBlock { (count: Int32, error: NSError!) -> Void in There error: cannot invoke 'countobjectsinbackgroundwithblock' with an argument list of type '((Int32, NSError!) - Void in)' 

Aquí está toda la function y aquí está esperando que sea solo una syntax como las otras 20 correcciones:

  func CallData() { var countQuery = PFQuery(className: "QandA") countQuery.countObjectsInBackgroundWithBlock { (count: Int32, error: NSError!) -> Void in if (error == nil) { let randomNumber = Int(arc4random_uniform(UInt32(count))) var query = PFQuery(className: "QandA") query.skip = randomNumber query.limit = 1 query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in if (error == nil) { var object: AnyObject = objects[0] self.Question = object ["Question"] as String! self.Answers = object ["Answers"] as Array! self.Answer = object ["Answer"] as String! if (self.Answers.count > 0) { self.QuestionLabel.text = self.Question self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal) self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal) self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal) self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal) } } else { NSLog("Something is wrong with the find request, dude. Sorry. %@", error) } } } else { NSLog("Something is wrong with the count request, dude. Sorry. %@", error) } } } 

¿Alguna idea sobre cómo deshacerse de ese error? ¿Por qué no funciona ahora cuando funcionó antes? Gracias.

Bueno, un error finalmente condujo a otro, pero finalmente lo solucioné … básicamente fue la syntax (errores de casting también, supongo, pero esencialmente errores de syntax en el casting … supongo … un signo de interrogación aquí , un punto de exclamación allí … Soy un novato, así que realmente no tengo idea, solo estoy pasando por la testing y el error) pero aquí está lo que funcionó:

  func CallData() { var countQuery = PFQuery(className: "QandA") countQuery.countObjectsInBackgroundWithBlock { (count: Int32, error: NSError?) -> Void in if (error == nil) { let randomNumber = Int(arc4random_uniform(UInt32(count))) var query = PFQuery(className: "QandA") query.skip = randomNumber; query.limit = 1 query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in if (error == nil) { var object: AnyObject = objects![0] self.Question = object ["Question"] as! String! self.Answers = object ["Answers"] as! Array! self.Answer = object ["Answer"] as! String! if (self.Answers.count > 0) { self.QuestionLabel.text = self.Question self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal) self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal) self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal) self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal) } } else { NSLog("Something is wrong with the find request, dude. Sorry. %@", error!) } } } else { NSLog("Something is wrong with the count request, dude. Sorry. %@", error!) } } } 

¿Por qué no simplemente:

  1. Vaya a https://developer.apple.com/downloads/index.action?name=Xcode (necesita una count de desarrollador) y descargue Xcode 6.2 DMG
  2. Renombrar en / aplicaciones la aplicación Xcode 6.3 actual (se llama simplemente Xcode) a Xcode-6.3
  3. Monte DMG descargado, luego copie Xcode en Aplicaciones.
  4. Xcode ahora es Xcode 6.2

Utilizo este enfoque para que Xcode sea siempre el último. De esa manera puedo build proyectos antiguos simplemente cambiando a la Xcode correcta (coloco todos los íconos en Dock).

Nota: esta es una solución a su problema principal. En un futuro próximo, deberías hacer la transición a Xcode 6.3 y Swift 1.2, pero mientras tanto puedes volver a comstackr

Descargue la última versión de Parse para solucionar este problema.

https://www.parse.com/docs/downloads/

Hay una herramienta en Xcode para ayudar a convertir Swift 1.1 a 1.2 – Ir a Editar> Convertir