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?