2017-10-02 7 views
0

Je suis nouveau à ce sujet alors s'il vous plaît. J'ai une application Master-Detail et j'ai des problèmes lors de l'exécution de l'application dans Portrait iPad. Master montre une vue de table, que lorsque la cellule est cliquée, une image apparaît sur la page Détails. Il plante sur le imageView1.image = MasterViewController.MyVariables.flowerImage! Notez que cela fonctionne dans l'iPhone. Je pense que ce qui se passe est parce que le flowerImage n'a pas encore chargé donc il n'y a aucune valeur. En passant, l'erreur est: erreur fatale: trouvé de manière inattendue nil lors du déballage d'une valeur facultative.Comment intercepter une erreur avant qu'elle ne se produise? erreur fatale: trouvé de manière inattendue nil tout en déballant une valeur optionnelle

override func viewDidLoad() { 
    super.viewDidLoad() 

    imageView1.image = MasterViewController.MyVariables.flowerImage! 
    // Do any additional setup after loading the view, typically from a nib. 
    configureView() 
} 
code

pour SplitViewController:

import UIKit 

classe SplitViewController: UISplitViewController, UISplitViewControllerDelegate {

override func viewDidLoad() { 
    self.delegate = self 
    self.preferredDisplayMode = .allVisible 
} 

func splitViewController(
    _ splitViewController: UISplitViewController, 
    collapseSecondary secondaryViewController: UIViewController, 
    onto primaryViewController: UIViewController) -> Bool { 
    // Return true to prevent UIKit from applying its default behavior 
    return true 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

+0

faites un garde sur votre image, de sorte que si elle est nulle, vous saurez. – koropok

Répondre

0

Lorsque vous n'êtes pas sûr que l'objet ne peut pas être nul, alors n'utilisez pas le déballage de force.

Vous pouvez utiliser plusieurs options: 1. "garde nous" déclaration:

guard let image = MasterViewController.MyVariables.flowerImage else{ 
    //add some notification about error here 
    return 
} 
imageView1.image = image 
  1. "si let" déclaration

    image = se laisser MasterViewController .MyVariables.flowerImage { imageView1.image = l'image } else {// ajouter une notification d'erreur ici}