Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. //: Playground - noun: a place where people can play
  2.  
  3. import UIKit
  4.  
  5. extension String {
  6. var isBlank: Bool {
  7. return trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
  8. }
  9. }
  10.  
  11. protocol StringProvider {
  12. var getString: String { get }
  13. }
  14.  
  15. extension String: StringProvider {
  16. var getString: String {
  17. return self
  18. }
  19. }
  20.  
  21. extension Optional where Wrapped: StringProvider {
  22. var isBlank: Bool {
  23. return self?.getString.isBlank ?? true
  24. }
  25. }
  26.  
  27. var s1: String? = nil
  28. var s2: String? = ""
  29. var s3: String? = " "
  30. var s4: String? = "car"
  31.  
  32. s1.isBlank
  33. s2.isBlank
  34. s3.isBlank
  35. s4.isBlank
  36.  
  37.  
  38. // isBlank is the Rails way. A more Swift way to do it is to consider how it is used
  39. // at call site. We want to operate on a filled in text string. Make a property
  40. // filled that returns the string or nil if the string is empty.
  41.  
  42. extension String {
  43. var filled: String? {
  44. return trimmingCharacters(in: .whitespaces).isEmpty ? nil : self
  45. }
  46. }
  47.  
  48. // what about optionals?... for that we can just use standard optional chaining! (aka flatMap)
  49.  
  50. let username = UILabel()
  51. username.text = "ray"
  52. let password = UILabel()
  53. password.text = "secret"
  54.  
  55. func login(username: UILabel, password: UILabel) {
  56. guard let username = username.text?.filled else {
  57. print("no username")
  58. return
  59. }
  60.  
  61. guard let password = password.text?.filled else {
  62. print("no password")
  63. return
  64. }
  65.  
  66. print (username, password)
  67. }
  68.  
  69. login(username: username, password: password)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement