Scelta del design: utilizzare NSFetchedResultsController e memorizzare le proprietà derivate o rollare la mia origine dati?

1

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:

  1. 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
  2. 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?

    
posta Jim 12.07.2017 - 18:41
fonte

0 risposte

Leggi altre domande sui tag