func storeBook() {
   let title = titleInput.trimmingCharacters(in: .whitespaces)
   if let year = Int(yearInput), !title.isEmpty {
      if let oldBook = appData.selectedBook {
         oldBook.title = title
         oldBook.year = year
         oldBook.author = appData.selectedAuthor
         oldBook.sortLetter = getFirstLetter(newTitle: title)
         try? dbContext.save()
      } else {
         let letter = getFirstLetter(newTitle: title)
         let cover = UIImage(named: "nocover")?.pngData()
 
         let newBook = Book(title: title, author: appData.selectedAuthor, cover: cover, year: year, sortLetter: letter)
         dbContext.insert(newBook)
         try? dbContext.save()
      }
      appData.selectedAuthor = nil
      appData.selectedBook = nil
      appData.viewPath.removeLast()
   }
}
func getFirstLetter(newTitle: String) -> SortLetters {
   var firstLetter = String(newTitle[newTitle.startIndex]).uppercased()
   if let _ = Int(firstLetter), firstLetter.isEmpty {
      firstLetter = "#"
   }
   let predicate = #Predicate<SortLetters> {
      $0.letter == firstLetter
   }
   let descriptor = FetchDescriptor<SortLetters>(predicate: predicate)
   if let request = try? dbContext.fetch(descriptor), request.count > 0 {
      let oldLetter = request[0]
      return oldLetter
   } else {
      let newLetter = SortLetters(letter: firstLetter, books: [])
      dbContext.insert(newLetter)
      try? dbContext.save()
      return newLetter
   }
}