Sto scrivendo un'app per iOS in Swift che calcola un peso massimo di 1 ripetizione utilizzando due input,   weightLifted    e   repetitions   . Una delle diverse formule viene utilizzata per eseguire il calcolo con questi due ingressi per arrivare alla risposta che è la 1 ripetizione massima. Sto solo memorizzando i valori di input, non il valore di 1 rep max. Sto anche memorizzando il   weightUnit    (kg o lb) del   weightLifted   . 
extension LiftEvent {
    @NSManaged var date: Date
    @NSManaged var repetitions: NSNumber
    @NSManaged var uid: NSNumber?
    @NSManaged var weightLifted: NSNumber
    @NSManaged var weightUnit: String
    @NSManaged var formula: Formula
    @NSManaged var lift: Lift
}
Ho scelto questo approccio perché il costo computazionale è trascurabile e rende semplice la conversione delle unità di peso.
 Tuttavia, ho scoperto uno sfortunato effetto collaterale dell'uso di   NSFetchedResultsController    e ho un'altra scelta da fare. Ogni risultato di calcolo può essere salvato come LiftEvent (il   NSManagedObject    visto sopra), ma non posso ordinare il risultato di 1 rep max se sto usando   NSFetchResultsController    perché è una proprietà derivata che viene creata solo in fase di esecuzione. Sembra che le mie scelte siano: 
-  mantiene il valore 1 rep max come un'altra proprietà di LiftEvent in modo che possa essere incluso come descrittore di ordinamento nella richiesta di recupero utilizzata da   NSFetchedResultsController
-  mantieni il mio modello dati così com'è, scarica   NSFetchedResultsController, e invece crea una matrice per conservare i risultati della richiesta di recupero, permettendomi di convertire e ordinare secondo necessità, quindi trasformarla nella mia origine dati.
 L'opzione 1 è probabilmente più semplice, ma non mi piace mai usarla come una ragione per fare qualcosa. Sfortunatamente, a causa delle limitazioni nel lavorare con i risultati recuperati una volta recuperati, rendi questa l'unica opzione che posso permettermi di mantenere il   NSFetchedResultsController    
Quali altre cose dovrei prendere in considerazione quando prendo questa decisione?