swift XCode 9 में किसी भी ऑब्जेक्ट(या इंट) प्रकार को अंतर कैसे करें-नया स्विफ्ट कंपाइलर



swift3 xcode8 (1)

मुझे किसी भी ऑब्जेक्ट के प्रकार की जांच करने की आवश्यकता है जिसे इंट (या इंट 16 या यूआईएनटी 8) मूल्य दिया गया था, अर्थात

Xcode 8 में - ऑब्जेक्ट पर स्विचिंग, मामलों का उपयोग करते हैं: is Uint8 , is Int16 , is Int वर्क फॉरवर्ड।
Xcode 9 में - यह हमेशा पहला मामला दर्ज करता है जो संभवत: सत्य है।

यहां खेल का मैदान के लिए एक कोड नमूना है:

var t1: AnyObject?
var t2: AnyObject?

t1 = 30 as AnyObject
t2 = Int16(30) as AnyObject

if let obj1 = t1 {
    switch obj1 {
    case is UInt8:
        print("UInt8")
    case is Int16:
        print("Int16")
    case is Int:
        print("Int")
    default:
        break
    }
}

if let obj2 = t2 {
    switch obj2 {
    case is UInt8:
        print("UInt8")
    case is Int16:
        print("Int16")
    case is Int:
        print("Int")
    default:
        break
    }
}

XCode 8 खेल का मैदान सांत्वना प्रिंट:
इंट
int16

XCode 9 खेल का मैदान सांत्वना प्रिंट:
UInt8
UInt8

ए। क्या कोई इस बात के बारे में बता सकता है, और / या इसके बारे में कोई भी documeted संदर्भ संलग्न है?
बी। खुश होगा मैं कोई मुझे XCode 9 में एक ही कार्यक्षमता प्राप्त करने में मदद कर सकता है।

धन्यवाद।


स्विफ्ट 3 के बाद से सभी संख्यात्मक प्रकार हैं, Any AnyObject नहीं है

var t1: Any?
var t2: Any?

t1 = 30 as Any
t2 = Int16(30) as Any
...

यह समस्या को हल करता है

मुझे लगता है कि किसी भी AnyObject पुलों को AnyObject को टाइप करने के लिए AnyObject जो किसी भी मामले से मेल खाता है।





swift4