Dictionary+Ex.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // Dictionary+Ex.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. import Foundation
  8. public extension Dictionary where Key == String {
  9. func safeString(forKey key: String) -> String {
  10. return safeObject(forKey: key, defaultValue: "")
  11. }
  12. func safeStringInt(forKey key: String) -> String {
  13. return safeObject(forKey: key, defaultValue: "0")
  14. }
  15. func safeArray(forKey key: String) -> [Any] {
  16. return safeObject(forKey: key, defaultValue: [])
  17. }
  18. func safeDictionary(forKey key: String) -> [String: Any] {
  19. return safeObject(forKey: key, defaultValue: [:])
  20. }
  21. func safeNumber(forKey key: String) -> NSNumber {
  22. return safeObject(forKey: key, defaultValue: NSNumber(value: 0))
  23. }
  24. func safeInt(forKey key: String) -> Int {
  25. guard let value = self[key] , let valueInt = value as? Int else { return 0 }
  26. return valueInt
  27. }
  28. func safeObject(forKey key: String) -> Any {
  29. return safeObject(forKey: key, defaultValue: NSObject())
  30. }
  31. private func safeObject<T>(forKey key: String, defaultValue: T) -> T {
  32. guard let value = self[key] , let valueT = value as? T else { return defaultValue }
  33. return valueT
  34. }
  35. }