02-ContentView-11.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. @State var showAlert = false
  2. @State var cacheSizeResult: Result<UInt, KingfisherError>? = nil
  3. var body: some View {
  4. List {
  5. Button("Check Cache") {
  6. KingfisherManager.shared.cache.calculateDiskStorageSize { result in
  7. cacheSizeResult = result
  8. showAlert = true
  9. }
  10. }
  11. .alert(
  12. "Disk Cache",
  13. isPresented: $showAlert,
  14. presenting: cacheSizeResult,
  15. actions: { result in
  16. switch result {
  17. case .success:
  18. Button("Clear") {
  19. KingfisherManager.shared.cache.clearCache()
  20. }
  21. Button("Cancel", role: .cancel) {}
  22. case .failure:
  23. Button("OK") { }
  24. }
  25. }, message: { result in
  26. switch result {
  27. case .success(let size):
  28. Text("Size: \(Double(size) / 1024 / 1024) MB")
  29. case .failure(let error):
  30. Text(error.localizedDescription)
  31. }
  32. })
  33. ForEach(0 ..< 10) { i in
  34. HStack {
  35. KFImage(url(at: i))
  36. // ...
  37. }
  38. }
  39. }.listStyle(.plain)
  40. }