Im Bau einer App, die eine Funktion haben wird, mit der Sie Benutzer auf einer Skala von 1-5 bewerten können. Ich habe bereits entschieden, ich werde wie so ein gewichtetes Mittel verwenden:5 Sterne System-Datenbank Design
Sum of (weight * number of reviews at that weight)/total number of reviews
Im Mühe, herauszufinden, wie diese Daten speichern Feuerbasis verwenden, da ich diese Bewertung Wert benötigen ein User
Objekt zu initialisieren . Ich dachte daran, jede Bewertung als ein Wörterbuch zu speichern, in dem der Schlüssel id
des Benutzers ist, der die Bewertung verlässt, und der Wert ist die tatsächliche Bewertung. Dann, nachdem ich Benutzer aus der Datenbank holen und müssen User
initialisieren ich folgendes:
// keep track of amount of each rating.
var oneStars = 0
var twoStars = 0
var threeStars = 0
var fourStars = 0
var fiveStars = 0
// iterate through dictionary of ratings where key is unique Id, and value is star rating.
for (key, value) in ratings {
switch value {
case 1: oneStars += 1
case 2: twoStars += 1
case 3: threeStars += 1
case 4: fourStars += 1
case 5: fiveStars += 1
}
}
let weightedSum = (
(5 * fiveStars) +
(4 * fourStars) +
(3 * threeStars) +
(2 * twoStars) +
(1 * oneStars)
)
let reviewsSum = oneStars + twoStars + threeStars + fourStars + fiveStars
let rating = weightedSum/reviewsSum
let user = User(name: "john doe", rating: rating)
Ist dies der beste Weg Bewertungen zu speichern und tun eigentliche Berechnung Objekt zu initialisieren, oder gibt es eine effizientere Gestaltung? Vielen Dank.