2016-04-06 7 views
1

Wenn ich eine Eins zu viele verwende, kann ich alle zugehörigen NSSet-Datensätze anzeigen, aber viele bis viele scheinen nicht gleich zu funktionieren.Wie man viele zu viele Beziehung mit nfetchedresultcontroller anzeigen?

In meinem segue übergebe ich den Turner zu einem VC, in dem ich alle assoziierten Treffen anzeigen möchte, die in einem eins zu vielen funktionieren.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     if let objs = fetchedResultsController.fetchedObjects where objs.count > 0 { 

      let item = objs[indexPath.row] as! Gymnast 

      performSegueWithIdentifier("displayMeets", sender: item) 
     } 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if segue.identifier == "displayMeets" { 

      let vc = segue.destinationViewController as! SelectMeetVC 

      vc.selectedGymnast = sender as? Gymnast 
     } 
    } 

ich einen Absturz, wenn ich die NSPredicate Kommentar aus

func loadFetchRequest() { 

     self.fetchedResultsController = nil 

     let fetchRequest = NSFetchRequest(entityName: "Meet") 

     let sortDescriptor1 = NSSortDescriptor(key: "meetName", ascending: true) 

     fetchRequest.sortDescriptors = [sortDescriptor1] 

     //let filter = NSPredicate(format: "gymnasts.fullName == %@", "\(selectedGymnast.fullName!)") 

     //fetchRequest.predicate = filter 

     let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: AD.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 

     controller.delegate = self 

     fetchedResultsController = controller 

     do { 

      try fetchedResultsController.performFetch() 

     } catch { 

      fatalError("Error retrieving core data") 
     } 
    } 

Antwort

0

Da die gymnasts Beziehung zu-viele ist, müssen Sie das Prädikat ändern, so dass es ein wählt Meet wenn jede von seine gymnasts Spiele:

let filter = NSPredicate(format: "ANY gymnasts.fullName == %@", "\(selectedGymnast.fullName!)") 

Beachten Sie auch, dass es keine Notwendigkeit, diezu verwendenAttribut - Sie können das Gymnast Objekt selbst anpassen:

let filter = NSPredicate(format: "ANY gymnasts == %@", selectedGymnast) 
+0

Vielen Dank. Arbeitete perfekt. – debratton

Verwandte Themen