Getting The Right Data Back

So I have an app and it relies on Core Data to save and load favourite players. The issue I have is the data being loaded in my viewwillappear method is the max number of all the players regardless whether or not I save the data. When I access my favouritesVC I can't go back and add more players because they take up the max amount of storage. I need my app to retrieve the favourites I saved not all the players.

class FavouritesVC {

   //this is a button I save my favourite players
  //the print statements are accurate
  @IBAction func save(_ sender: UIBarButtonItem) {
    let entity = NSEntityDescription.entity(forEntityName: "CurrentPlayers", in: context)!
    let saveFav = CurrentPlayers(entity: entity, insertInto: context)
    for o in prefArr {
      saveFav.yahooName = o.yahooName
      saveFav.team = o.team
      saveFav.position = o.position
      saveFav.photoUrl = o.photoUrl
    do {
      try context.save()
      print("These are my saved objects: \(saveFav)")
      print("how many saved objects: \(prefArr.count)")
    } catch {
      print("error is: \(error)")
    }
    }
  }
}

//what I use to load the data
   override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    let fetchRequest = NSFetchRequest<CurrentPlayers>(entityName: "CurrentPlayers")
    do {
      prefArr = try context.fetch(fetchRequest)
      for p in prefArr {
        if p.yahooName == "Jordan *****" {
          print("Jordan added")
        }
      }
      print("There are this many saved favourites \(prefArr.count)")
    } catch let error {
      print("Could not fetch. \(error)")
    }
  }
}

//core data class file
import Foundation
import CoreData

enum DecoderConfigurationError: Error {
  case missingManagedObjectContext
}


extension CodingUserInfoKey {
  static let managedObjectContext = CodingUserInfoKey(rawValue: "managedObjectContext")!
}

@objc(CurrentPlayers)
public class CurrentPlayers: NSManagedObject, Decodable {

   
  enum CodingKeys: String, CodingKey {
      case photoUrl = "PhotoUrl"
      case firstName = "FirstName"
      case lastName = "LastName"
      case position = "Position"
      case team = "Team"
      case yahooName = "YahooName"
      case status = "Status"
      case jerseyNumber = "Jersey"
    }
    
    public static var managedObjectContext: NSManagedObjectContext?
    
    required public convenience init(from decoder: Decoder) throws {
      guard let context = decoder.userInfo[.managedObjectContext] as? NSManagedObjectContext else {
        throw DecoderConfigurationError.missingManagedObjectContext
      }
      
     self.init(context: context)
      //...
     let values = try decoder.container(keyedBy: CodingKeys.self)
     photoUrl = try values.decode(String.self, forKey: CodingKeys.photoUrl)
     firstName = try values.decode(String.self, forKey: CodingKeys.firstName)
     lastName = try values.decode(String.self, forKey: CodingKeys.lastName)
     position = try values.decode(String.self, forKey: CodingKeys.position)
     team = try values.decode(String.self, forKey: CodingKeys.team)
     yahooName = try values.decodeIfPresent(String.self, forKey: CodingKeys.yahooName)
     status = try values.decode(String.self, forKey: CodingKeys.status)
     jerseyNumber = try values.decodeIfPresent(Int64.self, forKey: CodingKeys.jerseyNumber) ?? 0
    }
}

Your save(_:) does not make sense considering the fact prefArr is made of fetched results. Please clarify what you expect on calling save(_:)?

Getting The Right Data Back
 
 
Q