Statistic calculation for "a" word

This commit is contained in:
Avery Pace
2021-11-07 17:15:11 -05:00
parent 0f351477e1
commit e4c5c2df05
9 changed files with 110 additions and 47 deletions

View File

@@ -39,6 +39,8 @@ extension Binding {
struct FlashCardStack: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(entity:FlashCardAnswer.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \FlashCardAnswer.word, ascending: false)]) var flashCardAnswers: FetchedResults<FlashCardAnswer>
var dictionary: [TokiDictEntry]
@State private var flashCards: [FlashCard] = []
@State private var topFlashCard: FlashCard? = nil
@@ -72,7 +74,6 @@ struct FlashCardStack: View {
Spacer()
.onAppear {
initFlashCards()
print(currentFlashCard)
}
}
@@ -99,18 +100,50 @@ struct FlashCardStack: View {
flashCardsAreInteractive[currentFlashCard] = true
}
func setFlashCardAnswersCoreData(_ correct: Bool) {
var cardInDatabase = false
for answer in flashCardAnswers {
print(answer.word)
if answer.word == dictionary[currentFlashCard].word {
cardInDatabase = true
answer.setValue((answer.triesCount + 1), forKey: "triesCount")
if correct {
answer.setValue((answer.correctCount + 1), forKey: "correctCount")
}
print("answer found in database")
}
}
if cardInDatabase == false {
let answer = FlashCardAnswer(context: viewContext)
answer.word = dictionary[currentFlashCard].word
answer.triesCount = 1
if correct {
answer.correctCount = 1
}
print("answer not found in database")
}
// for answer in flashCardAnswers {
// if answer.word == dictionary[currentFlashCard].word {
// flashCardAnswer.word = answer.word
// flashCardAnswer.triesCount = answer.triesCount + 1
// if correct {
// flashCardAnswer.correctCount = answer.correctCount + 1
// }
// }
// }
try? viewContext.save()
}
func cardAnswerReceived() {
let flashCardAnswer = FlashCardAnswer(context: viewContext)
flashCardAnswer.word = dictionary[currentFlashCard].word
if flashCardsResults[currentFlashCard] == FlashCardResult.Correct {
flashCardAnswer.correct = true
setFlashCardAnswersCoreData(true)
} else if flashCardsResults[currentFlashCard] == FlashCardResult.Incorrect {
flashCardAnswer.correct = false
setFlashCardAnswersCoreData(false)
} else {
return
}
try? viewContext.save()
nextFlashCard()
}