Skip to content

Commit af89a49

Browse files
authored
Merge pull request #1797 from Kaiede/conditionalBridgeFor4.2
2 parents 3d07e9a + 9042291 commit af89a49

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

Foundation/NSNumber.swift

+8-5
Original file line numberDiff line numberDiff line change
@@ -541,13 +541,16 @@ extension Bool : _ObjectiveCBridgeable {
541541
}
542542

543543
publicstaticfunc _conditionallyBridgeFromObjectiveC(_ x:NSNumber, result:inoutBool?)->Bool{
544-
if x.intValue ==0 || x.intValue ==1{
545-
result = x.boolValue
544+
if x === kCFBooleanTrue || NSNumber(value:1)== x {
545+
result =true
546+
returntrue
547+
}elseif x === kCFBooleanFalse || NSNumber(value:0)== x {
548+
result =false
546549
returntrue
547-
}else{
548-
result =nil
549-
returnfalse
550550
}
551+
552+
result =nil
553+
returnfalse
551554
}
552555

553556
publicstaticfunc _unconditionallyBridgeFromObjectiveC(_ source:NSNumber?)->Bool{

TestFoundation/TestNSNumberBridging.swift

+10
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,16 @@ class TestNSNumberBridging : XCTestCase {
642642
XCTAssertNotNil(b3)
643643
XCTAssertEqual(b3,true)
644644

645+
letb4=NSNumber(value:0.0)as?Bool
646+
XCTAssertNotNil(b4)
647+
XCTAssertEqual(b4,false)
648+
649+
letb5=NSNumber(value:1.0)as?Bool
650+
XCTAssertNotNil(b5)
651+
XCTAssertEqual(b5,true)
652+
653+
XCTAssertNil(NSNumber(value:0.25)as?Bool)
654+
XCTAssertNil(NSNumber(value:1.25)as?Bool)
645655
XCTAssertNil(NSNumber(value:-1)as?Bool)
646656
XCTAssertNil(NSNumber(value:2)as?Bool)
647657
XCTAssertNil(NSNumber(value:Int8.min)as?Bool)

0 commit comments

Comments
 (0)
close