我想从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)
}
}