当我想在CoreData中保存某些内容时,Lottie Animation停止工作

时间:2019-12-20 15:38:17

标签: swift firebase firebase-realtime-database core-data lottie

我想从Firebase数据库下载数据并将其保存到CoreData中。因为这需要几秒钟,所以我想在下载和保存过程中呈现一个Lottie动画。动画有效,但是在此过程中,应用不会播放动画。有人知道如何解决这个问题吗?

我如何设置抽奖动画

let lottieView: AnimationView = {
    let lottieView = AnimationView()
    lottieView.animation = Animation.named("animation")
    lottieView.loopMode = .loop
    lottieView.translatesAutoresizingMaskIntoConstraints = false
    return lottieView
}()

何时播放

var entityName = "Words"
var level = "Beginner"

Database.database().reference().child("Words").child(level).observe(.childAdded) { (snapshot) in
    self.lottieView.play()
    if let dict = snapshot.value as? [String: Any] {
        let word = Word(original: "\(dict["original"]!)", translated: "\(dict["translated"]!)", level: "\(dict["level"]!)", phase: "1", lastQuery: dateFormatter.string(from: date), learned: false)
        allWords.append(word)
        self.saveWord(entity: newEntityName, word: word)
        self.lottieView.stop()
    }
}

我如何保存单词

func saveWord(entity: String, word: Word) {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return
    }

    let context = appDelegate.persistentContainer.viewContext

    let entityName = entity

    guard let newEntity = NSEntityDescription.entity(forEntityName: entityName, in: context) else {
        return
    }

    let newWord = NSManagedObject(entity: newEntity, insertInto: context)

    let original = word.original
    let translated = word.translated
    let level = word.level
    let phase = "1"
    let lastQuery = word.lastQuery
    let learned = false

    newWord.setValue(original, forKey: "original")
    newWord.setValue(translated, forKey: "translated")
    newWord.setValue(level, forKey: "level")
    newWord.setValue(phase, forKey: "phase")
    newWord.setValue(lastQuery, forKey: "lastQuery")
    newWord.setValue(learned, forKey: "learned")

    do {
        try context.save()
        print("Saved: \(original)")
    } catch {
        print(error)
    }
}

0 个答案:

没有答案