Advertisement
Guest User

Untitled

a guest
Nov 30th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. //
  2. // Deserializable.swift
  3. // MapperDemo
  4. //
  5. // Created by 默司 on 2016/12/1.
  6. // Copyright © 2016年 默司. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10. import SwiftyJSON
  11. import SWXMLHash
  12.  
  13. protocol NodeAccessable {
  14. func child(index: Int) -> NodeAccessable
  15. func child(key: String) -> NodeAccessable
  16.  
  17. var string: String? { get }
  18. var bool: Bool? { get }
  19. var number: NSNumber? { get }
  20. }
  21.  
  22. extension JSON : NodeAccessable {
  23. func child(index: Int) -> NodeAccessable {
  24. return self[index]
  25. }
  26.  
  27. func child(key: String) -> NodeAccessable {
  28.  
  29. return self[key]
  30. }
  31. }
  32.  
  33. extension XMLIndexer : NodeAccessable {
  34. func child(index: Int) -> NodeAccessable {
  35. return self[index]
  36. }
  37.  
  38. func child(key: String) -> NodeAccessable {
  39. return self[key]
  40. }
  41.  
  42. var string: String? {
  43. if let text = self.element?.text {
  44. return text
  45. }
  46. return nil
  47. }
  48.  
  49. var bool: Bool? {
  50. if let text = self.element?.text {
  51. return NSString(string: text).boolValue
  52. }
  53. return nil
  54. }
  55.  
  56. var number: NSNumber? {
  57. if let text = self.element?.text {
  58. if let n = Int(text) {
  59. return NSNumber(value: n)
  60. }
  61.  
  62. if let n = Float(text) {
  63. return NSNumber(value: n)
  64. }
  65.  
  66. if let n = Double(text) {
  67. return NSNumber(value: n)
  68. }
  69. }
  70.  
  71. return nil
  72. }
  73. }
  74.  
  75. protocol Deserializable {
  76. static func deserialize(input: NodeAccessable) -> Self
  77. }
  78.  
  79. struct User: Deserializable {
  80. var username: String?
  81. var password: String?
  82.  
  83. static func deserialize(input: NodeAccessable) -> User {
  84. var user = User()
  85. user.username = input.child(key: "username").string
  86. user.password = input.child(key: "password").string
  87. return user
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement