2014-07-16 2 views
0

Je vais essayer de le rendre aussi simple que possible, je suis aller chercher à partir des données de base en utilisant NSFetchedResultsController mon cellForRowAtIndexPath ressemble à ceciCore Data + NSFetchedResultsController dans SWIFT

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? { 
    var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 
    let newEntry : Entry = fetchedResultController.objectAtIndexPath(indexPath) as Entry 
    cell.textLabel.text = newEntry.title 
    return cell 
} 

Mon application plante

Quand je remplace la ligne ci-dessous

let newEntry : Entry = fetchedResultsController.objectAtIndexPath(indexPath) as Entry 

Avec cette ligne l'application fonctionne enregistrements tableview aucune erreur peuplent aucun problème

let newEntry : AnyObject! = self.fetchedResultsController.objectAtIndexPath(indexPath) 

La question est pourquoi ne ANYOBJECT est une entrée NSManagedObject

Merci Vous

+0

Conseil: deux questions doivent être écrites comme deux questions distinctes en SO. – andrewbuilder

Répondre

3

Il n'y a pas de problème avec NSFetchedResultsController, mais Objective-C doit reconnaître votre sous-classe NSManagedObject. Ajoutez simplement @objc (Entrée) dans votre sous-classe NSManagedObject:

@objc(Entry) 
class Entry: NSManagedObject { 
    @NSManaged var title: String 
} 
+0

Cela ne semble pas fonctionner. Je ne pense pas que @ngeran cherchait à utiliser la classe en Objective-C, et ajouter @objc (Entrée) ne résout pas le problème dans Swift pour moi. Il a quelque chose à voir avec le NSpMagasin Swift NSManagedObject, semble-t-il. – PLJNS

0

J'ai rencontré un problème similaire. Maintenant, je l'ai rectifié avec succès selon la dernière version d'iOS. J'espère que mon code aide.

if let newEntry = fetchedResultsController?.objectAtIndexPath(indexPath) as? Entry{ 
    cell.textLabel?.text = newEntry.title 
} 
return cell 
-1

Essayez-le!

if let access:Entry = self.fetchedResultsController.objectAtIndexPath(indexPath) as? Entry { 
    cell.textLabel?.text = access.valueForKey("title") as? String 
} 

Et puis return-cell

Questions connexes