How can I fetch core data objects into an array

I am trying to build an application that helps dyslectic children to automate words and I cannot get the lists in my app to work as desired: users can create lists [LijstMO] that contain a set of words [WoordMO]. I am able to create and fetch lists, and to create words, but I can't create an army of words that belong to a specific list. Which superhero can make my day and help me out with a filtered fetch request? All help is extremely appreciated.

First my core data model:

my data model

Then my code:

import UIKit
import CoreData

class WoordTableViewController: UITableViewController, NSFetchedResultsControllerDelegate, UITextFieldDelegate {

    @IBOutlet weak var woordTextField: UITextField!

    var lijst: LijstMO!
    var woord: WoordMO!
    var woordeninlijst: [WoordMO] = []
    var fetchResultController: NSFetchedResultsController<WoordMO>!

    override func viewDidLoad() {

        title = lijst.naam
        self.woordTextField.delegate = self

        let fetchRequest: NSFetchRequest<WoordMO> = WoordMO.fetchRequest()
        let sortDescriptor = NSSortDescriptor(key: "naam", ascending: true)
        fetchRequest.sortDescriptors = [sortDescriptor]

        if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) {
            let context = appDelegate.persistentContainer.viewContext
            fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
            fetchResultController.delegate = self

            do {
                try fetchResultController.performFetch()
                if let fetchedObjects = fetchResultController.fetchedObjects {
                    woordeninlijst = fetchedObjects
            } catch {

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        self.navigationItem.rightBarButtonItem = self.editButtonItem

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

    // MARK: - Table view data source

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        // foutmelding leeg woord
        if woordTextField.text == "" {
            let alertController = UIAlertController(title: "Oooo Neeeee", message: "Zonder tekst kunnen we dit woord echt niet opslaan. Geef 'm een mooie naam en druk op Bewaar. Ka-tching! ", preferredStyle: .alert)
            let alertAction = UIAlertAction(title: "Okidoki", style: .default, handler: nil)
            present(alertController, animated: true, completion: nil)

            return false

        else {
        print("Woord: \(woordTextField.text ?? "")")

        // saving the restaurant to database
        if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) {

            // create new list

            woord = WoordMO(context: appDelegate.persistentContainer.viewContext)
            woord.naam = woordTextField.text
            woord.zitInLijst = lijst
            woordTextField.text = ""

            print ("WoordMO: \(woord.naam ?? "")")

        return true

    override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return woordeninlijst.count

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let CellIdentifier = "Cell"
        let cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifier, for: indexPath) as! WoordTableViewCell

        cell.woordLabel.text = woordeninlijst[indexPath.row].naam

        return cell


    // MARK: NSFetchedResultsControllerDelegate methods

    func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {

    func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {

        switch type {
        case .insert:
            if let newIndexPath = newIndexPath {
                tableView.insertRows(at: [newIndexPath], with: .fade)
        case .delete:
            if let indexPath = indexPath {
                tableView.deleteRows(at: [indexPath], with: .fade)
        case .update:
            if let indexPath = indexPath {
                tableView.reloadRows(at: [indexPath], with: .fade)

        if let fetchedObjects = controller.fetchedObjects {
            woordeninlijst = fetchedObjects as! [WoordMO]

    func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {