J'ai un problème avec le code que je n'arrive pas à comprendre. Après avoir installé Xcode 7 beta et converti mon code Swift en Swift 2
Code:
override func viewDidAppear(animated: Bool) {
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = AppDel.managedObjectContext
let request = NSFetchRequest(entityName: "PlayerList")
list = Context.executeFetchRequest(request)
tableView.reloadData()
}
Capture d'écran:
À partir de Swift 2, les méthodes Cocoa qui génèrent des erreurs sont traduites en fonctions Swift qui génèrent une erreur.
Au lieu d'une valeur de retour facultative et d'un paramètre d'erreur comme dans Swift 1.x:
var error : NSError?
if let result = context.executeFetchRequest(request, error: &error) {
// success ...
list = result
} else {
// failure
println("Fetch failed: \(error!.localizedDescription)")
}
dans Swift 2, la méthode retourne maintenant une valeur non optionnelle et génère une erreurdans le cas d'erreur, celle-ci doit être gérée avec try-catch:
do {
list = try context.executeFetchRequest(request)
// success ...
} catch let error as NSError {
// failure
print("Fetch failed: \(error.localizedDescription)")
}
Pour plus d'informations, voir "Traitement des erreurs" dans "Adoption de modèles de conception Cocoa" Dans "Utilisation de Swift avec Cocoa et Objective-C" .
Vous pouvez essayer ce code:
let result = (try! self.manageContext.executeFetchRequest(FetchRequest)) as! [NSManageObjectClass]
Swift 3.0 Dans cet exemple PlayerList est NSManagedObject nom entité/classe (créé automatiquement par Xcode)
let request: NSFetchRequest<PlayerList> = PlayerList.fetchRequest()
var result:[PlayerList]?
do{
//Succes
result = try context.fetch(request)
}catch let error as NSError {
//Error
print("Error \(error)")
}
print("result: \(result)")
var results = [YourEntity]?
results = try! self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [YourEntity]
Essayez le code ci-dessous
override func viewWillAppear(animated: Bool) {
let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let context = appDel.managedObjectContext
let request = NSFetchRequest(entityName:"Users")
do {
let results = try context.executeFetchRequest(request)
itemList = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}