2017-08-21 3 views
0

programme a de la classe Simpson:chargement d'objets UIImage bloque l'exécution du programme à l'aide rapide

import Foundation 
import UIKit 

class Simpson 
{ 
    var name="" 
    var occupation="" 
    var image = UIImage() 
} 

En utilisant cette classe je déclarais un tableau:

import UIKit 

class tableVC: UIViewController ,UITableViewDelegate,UITableViewDataSource{ 

    @IBOutlet weak var tableView: UITableView! 
var mySimpsons=[Simpson]() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     //tableview setup 
     tableView.delegate=self 
     tableView.dataSource=self 

     //create our Character 
     let homer=Simpson() 
     homer.name="Homer Simpson" 
     homer.occupation="safty inseptor" 
     homer.image=UIImage(named: "Homer.png")! 

     let bart=Simpson() 
     bart.name="Bart Simpson" 
     bart.occupation="Student" 
     bart.image=UIImage(named: "Bart.png")! 

     let marge=Simpson() 
     marge.name="Marge Simpson" 
     marge.occupation="HomerMaker" 
     marge.image=UIImage(named: "Marge.png")! 

     let Ned=Simpson() 
     Ned.name="Ned Simpson" 
     Ned.occupation="Phamacist" 
     Ned.image=UIImage(named: "Ned.png")! 

     mySimpsons.append(homer) 
     mySimpsons.append(bart) 
     mySimpsons.append(marge) 
     mySimpsons.append(Ned) 
} 

UITableView fonctions de délégué sont:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return mySimpsons.count 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell=UITableViewCell() 
    cell.textLabel?.text=mySimpsons[indexPath.row].name 
    return cell 
} 

Ce programme s'exécute avec succès, mais il a échoué à lancer et à programmer fr L'objet Simpsons reçoit un lien d'image. i.e.

homer.image=UIImage(named: "Homer.png")! 

Comment puis-je débarrasser de cette erreur? À partir de ce lien, vous pouvez télécharger l'exemple de correction de formulaire de projet link.

Répondre

2

Cet incident se produit parce que vous forcez l'instance UIImage non dépliée. Tout d'abord, vérifiez si vous avez ajouté ces images à votre projet. Ensuite, vérifiez si l'image est correctement instancié par:

if let image = UIImage(named: "Homer") { 
    homer.image = image 
} 

Selon UIImage.init(named:)documentation:

Pour les images PNG, vous pouvez omettre l'extension de nom de fichier. Pour tous les autres formats de fichiers, incluez toujours l'extension du nom de fichier.

+0

comment je peux vérifier le type d'image comme. "Homer.png" –

+0

@frincit Vérifiez la réponse mise à jour. – krlb