Sometimes swift will get some messy by returning _NSContiguousString
instead of String
if you use .dynamicType
this function will try to help you, to get the class with the easiest way, taking no futher efford.
// | |
// SwiftGetHumanType.swift | |
// PHPFramework | |
// | |
// Created by Wesley de Groot on 02-03-16. | |
// Copyright © 2016 WDGWV. All rights reserved. | |
// | |
// https://gist.github.com/wdg/5cf0f2187c7d31a931b7 | |
import Foundation | |
func getHumanClassname(Ob: Any) -> String { | |
var _ret: String | |
switch (String(Ob.dynamicType)) { | |
case "__NSCFNumber", "Int": | |
_ret = "Int" | |
break | |
case "__NSCFBoolean", "Bool": | |
_ret = "Bool" | |
break | |
case "Double": | |
_ret = "Double" | |
break | |
case "_SwiftDeferredNSArray", "Array<String>", "Array<Int>": | |
_ret = "Array" | |
break | |
case "__NSCFString", "_NSContiguousString", "String", "NSString": | |
_ret = "String" | |
break | |
case "_NativeDictionaryStorageOwner<String, Array<String>>": | |
_ret = "Dictionary" | |
break | |
case "protocol<>", "protocol<> -> Bool": | |
_ret = "Protocol" | |
break | |
default: | |
print("Did'nt found type!, please report it to: https://gist.github.com/wdg/5cf0f2187c7d31a931b7") | |
print("Found: \(String(Ob.dynamicType))") | |
_ret = "\(String(Ob.dynamicType))" | |
break | |
} | |
return _ret | |
} | |
func getClass(Ob: Any) -> String { | |
return getHumanClassname(Ob) | |
} |