Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Deserializable.swift
- // MapperDemo
- //
- // Created by 默司 on 2016/12/1.
- // Copyright © 2016年 默司. All rights reserved.
- //
- import Foundation
- import SwiftyJSON
- import SWXMLHash
- protocol NodeAccessable {
- func child(index: Int) -> NodeAccessable
- func child(key: String) -> NodeAccessable
- var string: String? { get }
- var bool: Bool? { get }
- var number: NSNumber? { get }
- }
- extension JSON : NodeAccessable {
- func child(index: Int) -> NodeAccessable {
- return self[index]
- }
- func child(key: String) -> NodeAccessable {
- return self[key]
- }
- }
- extension XMLIndexer : NodeAccessable {
- func child(index: Int) -> NodeAccessable {
- return self[index]
- }
- func child(key: String) -> NodeAccessable {
- return self[key]
- }
- var string: String? {
- if let text = self.element?.text {
- return text
- }
- return nil
- }
- var bool: Bool? {
- if let text = self.element?.text {
- return NSString(string: text).boolValue
- }
- return nil
- }
- var number: NSNumber? {
- if let text = self.element?.text {
- if let n = Int(text) {
- return NSNumber(value: n)
- }
- if let n = Float(text) {
- return NSNumber(value: n)
- }
- if let n = Double(text) {
- return NSNumber(value: n)
- }
- }
- return nil
- }
- }
- protocol Deserializable {
- static func deserialize(input: NodeAccessable) -> Self
- }
- struct User: Deserializable {
- var username: String?
- var password: String?
- static func deserialize(input: NodeAccessable) -> User {
- var user = User()
- user.username = input.child(key: "username").string
- user.password = input.child(key: "password").string
- return user
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement