diff options
Diffstat (limited to 'swift/src')
-rw-r--r-- | swift/src/Ice/Proxy.swift | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/swift/src/Ice/Proxy.swift b/swift/src/Ice/Proxy.swift index 978048db125..bb819639766 100644 --- a/swift/src/Ice/Proxy.swift +++ b/swift/src/Ice/Proxy.swift @@ -734,12 +734,15 @@ open class _ObjectPrxI: ObjectPrx { public static func checkedCast<ProxyImpl>(prx: ObjectPrx, facet: String? = nil, context: Context? = nil) throws -> ProxyImpl? - where ProxyImpl: _ObjectPrxI { - let objPrx = facet != nil ? prx.ice_facet(facet!) : prx - guard try objPrx.ice_isA(id: ProxyImpl.ice_staticId(), context: context) else { + where ProxyImpl: _ObjectPrxI { + do { + let objPrx = facet != nil ? prx.ice_facet(facet!) : prx + guard try objPrx.ice_isA(id: ProxyImpl.ice_staticId(), context: context) else { + return nil + } + } catch is FacetNotExistsException { return nil } - return ProxyImpl(from: objPrx) } public static func uncheckedCast<ProxyImpl>(prx: ObjectPrx, |