12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //
- // BuiltInBridgeType.swift
- // HandyJSON
- //
- // Created by zhouzhuo on 15/07/2017.
- // Copyright © 2017 aliyun. All rights reserved.
- //
- import Foundation
- protocol _BuiltInBridgeType: _Transformable {
- static func _transform(from object: Any) -> _BuiltInBridgeType?
- func _plainValue() -> Any?
- }
- extension NSString: _BuiltInBridgeType {
- static func _transform(from object: Any) -> _BuiltInBridgeType? {
- if let str = String.transform(from: object) {
- return NSString(string: str)
- }
- return nil
- }
- func _plainValue() -> Any? {
- return self
- }
- }
- extension NSNumber: _BuiltInBridgeType {
- static func _transform(from object: Any) -> _BuiltInBridgeType? {
- switch object {
- case let num as NSNumber:
- return num
- case let str as NSString:
- let lowercase = str.lowercased
- if lowercase == "true" {
- return NSNumber(booleanLiteral: true)
- } else if lowercase == "false" {
- return NSNumber(booleanLiteral: false)
- } else {
- // normal number
- let formatter = NumberFormatter()
- formatter.numberStyle = .decimal
- return formatter.number(from: str as String)
- }
- default:
- return nil
- }
- }
- func _plainValue() -> Any? {
- return self
- }
- }
- extension NSArray: _BuiltInBridgeType {
-
- static func _transform(from object: Any) -> _BuiltInBridgeType? {
- return object as? NSArray
- }
- func _plainValue() -> Any? {
- return (self as? Array<Any>)?.plainValue()
- }
- }
- extension NSDictionary: _BuiltInBridgeType {
-
- static func _transform(from object: Any) -> _BuiltInBridgeType? {
- return object as? NSDictionary
- }
- func _plainValue() -> Any? {
- return (self as? Dictionary<String, Any>)?.plainValue()
- }
- }
|