tab sheet icon guidelines buttons bar ios swift

sheet - status bar ios



error fatal: se encontró inesperadamente nil mientras se desenvolvía un valor opcional (10)

Estoy intentando ejecutar este código pero sigo recibiendo este error:

error fatal: se encontró inesperadamente nil mientras se desenvolvía un valor opcional

No entiendo lo que significa o por qué lo estoy entendiendo. ¿Alguna pista?

import UIKit class ViewController: UIViewController { var lastNumber: String = "" @IBOutlet var answerField: UILabel @IBOutlet var operaterLabel: UILabel override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func buttonTapped(theButton: UIButton) { if answerField.text == "0" { answerField.text = theButton.titleLabel.text } else { answerField.text = answerField.text + theButton.titleLabel.text } } @IBAction func plusTapped(theButton: UIButton) { // error is talking about the next line if operaterLabel.text == "" { operaterLabel.text = "+" lastNumber = answerField.text answerField.text = "0" } else { enterTapped(nil) operaterLabel.text = "+" } } @IBAction func minusTapped(theButton: UIButton) { if operaterLabel.text == "" { operaterLabel.text = "-" lastNumber = answerField.text answerField.text = "0" } else { enterTapped(nil) operaterLabel.text = "-" } } @IBAction func clearTapped(AnyObject) { answerField.text = "0" operaterLabel.text = "" lastNumber = "" } @IBAction func enterTapped(AnyObject?) { var num1 = lastNumber.toInt() var num2 = answerField.text.toInt() if !num1 || !num2 { showError() return } var answer = 0 if operaterLabel.text == "-" { var answer = num1! - num2! } else if operaterLabel.text == "+" { var answer = num1! + num2! } else { showError() return } answerField.text = "/(answer)" } func showError() { println("Ther was an error") } }


Algunas veces, el problema que tiene para iniciar el controlador de vista antes de presentarlo es el siguiente:

let myViewController = MyViewController()

reemplazarlo por

let myViewController = self.storyboard?.instantiateViewController(withIdentifier: "storyboardID") as! MyViewController


Busqué y busqué tratando de averiguar cómo resolver mi problema similar. Como han mencionado otros, accedía a los elementos de la interfaz de usuario antes de que se inicializaran. Pero averiguar por qué, fue la parte difícil. Spoiler -> Estaba usando ProfileVC.swift y profileVC.xib

A pesar de que tenía todas mis conexiones en el IB, desde el ParentVC que estaba llamando

let newVC = ProfileVC() profile.modalPresentationStyle = .custom present(profile, animated: true, completion:nil)

Como tenía diferentes nombres (caplital ''P'' en mi archivo swift y minúscula ''p'' en mi xib), llamar a ProfileVC () no funcionó porque no sabía cómo ir al xib que había hecho. En su lugar tuve que usar:

let newVC = ProfileVC.init(nibName: "profileVC", bundle: Bundle.main)

o simplemente cambie el nombre de xib para tener un P cautial y podría usar mi código original

Obviamente, esto es difícil de ver en , ya que necesita ver lo que está llamando en el VC principal, los nombres de los archivos y el IB. Así que espero que esta sea una solución para el problema de alguien, incluso si no resuelve el problema de Arshia.


En mi caso, estaba tratando de acceder a las etiquetas en una función que creé que se usó después del conjunto de una variable.

var something: String { didSet { updateUI() } } func updateUI() { label.text = "Hello" }

Lo resolví por:

var something: String override func viewDidLoad() { label.text = "hello" }

Mi teoría es que se accedió a mi función updateUI antes de crear las vistas y las etiquetas.


Eso significa que su guión gráfico no tiene un enlace a su IBOUTLET, verifique


Este error generalmente ocurre porque intentamos cambiar el texto de UILabel después de cargar la vista. Recuerde que UILabels una vez cargado en la vista no se puede cambiar de ninguna manera, solo se puede configurar dentro de la función viewdidload (). Puede verificar esto colocando su código de asignación de texto en la función viewDidLoad () que establecerá UILabels al cargar la vista. Funcionará. Pero ahora, si su aplicación está diseñada de tal manera que configura UILabels después de que se cargue la vista, entonces la única solución es que necesitará crear UILabels de forma dinámica / programática donde quiera que quiera en el código y asignar lo que quiera porque serán creados / instanciados con ese texto / etiqueta.


Si te aseguras de que el xib para tu celular no sea un problema,

Luego se produce este problema, mi error fue registrar el método de cell :

1)

self.tableView.register(TerantInfoTabCell.self, forCellReuseIdentifier: "TerantInfoTabCell")

2)

self.tableView.register(UINib(nibName:"TerantInfoTabCell", bundle: nil), forCellReuseIdentifier: "TerantInfoTabCell")

Utilizo el primer método, aparecerá el problema, luego usaré el método 2) reemplazar el 1), así que no hay problema aquí.


Tuve este error y mi problema se debió al agregar un miembro (llamémoslo newProperty) a mi clase de modelo y luego intentar ejecutar un proyecto que cargó datos con NSCoder.decodeObjectForKey (newPropertyKey). Durante las pruebas anteriores, había guardado objetos sin newProperty, por lo que cuando la aplicación intentó llamar a decodeObjectForKey (newPropertyKey) en mis datos antiguos, Xcode respondió con este mensaje de error.


Tuve exactamente el mismo error y pasé tranquilamente un tiempo depurándolo. Lo que dijo @jmduke es realmente la clave: ¿dónde ocurre el error?

Con mi error en particular, mirar operaterLabel.text == "" me condujo por el camino correcto. operaterLabel.text al operaterLabel.text mientras la vista aún no estaba completamente inicializada. En mi caso particular, establezco una variable desde una vista diferente durante un segmento y luego actúo sobre esa variable configurada y actualizando una etiqueta dentro de la vista. Sin embargo, la vista no fue completamente inicializada.

Por lo tanto, mi solución fue actualizar la etiqueta dentro de la función viewDidLoad() .


el error se refiere al hecho de que está accediendo al parámetro de un valor opcional cuando el valor opcional se establece en nulo (por ejemplo, accediendo a answerField.text cuando answerField es nulo), probablemente uno de sus dos UILabels .

Si la línea operaterLabel.text == "" está lanzando la excepción, entonces su operaterLabel es nula. Verifique que lo haya conectado correctamente a la etiqueta en su archivo de Interface Builder.


revise sus puntos de venta, he tenido esto antes de que las etiquetas y los botones puedan desconectarse (si, por ejemplo, ha ajustado las restricciones, etc.)

Una conexión simple puede a veces solucionar el problema.