diff --git a/Foundation/NSString.swift b/Foundation/NSString.swift index d79bc87440..87eb12ebf8 100644 --- a/Foundation/NSString.swift +++ b/Foundation/NSString.swift @@ -229,6 +229,11 @@ public class NSString : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, N override internal var _cfTypeID: CFTypeID { return CFStringGetTypeID() } + + public override func isEqual(object: AnyObject?) -> Bool { + guard let string = (object as? NSString)?._swiftObject else { return false } + return self.isEqualToString(string) + } } extension NSString { diff --git a/TestFoundation/TestNSString.swift b/TestFoundation/TestNSString.swift index 3448f64506..8eda160cf1 100644 --- a/TestFoundation/TestNSString.swift +++ b/TestFoundation/TestNSString.swift @@ -23,6 +23,8 @@ class TestNSString : XCTestCase { return [ ("test_BridgeConstruction", test_BridgeConstruction ), ("test_isEqualToStringWithSwiftString", test_isEqualToStringWithSwiftString ), + ("test_isEqualToObjectWithNSString", test_isEqualToObjectWithNSString ), + ("test_isNotEqualToObjectWithNSNumber", test_isNotEqualToObjectWithNSNumber ), ("test_FromASCIIData", test_FromASCIIData ), ("test_FromUTF8Data", test_FromUTF8Data ), ("test_FromMalformedUTF8Data", test_FromMalformedUTF8Data ), @@ -58,6 +60,18 @@ class TestNSString : XCTestCase { let swiftString = "literal" XCTAssertTrue(string.isEqualToString(swiftString)) } + + func test_isEqualToObjectWithNSString() { + let string1: NSString = "literal" + let string2: NSString = "literal" + XCTAssertTrue(string1.isEqual(string2)) + } + + func test_isNotEqualToObjectWithNSNumber() { + let string: NSString = "5" + let number: NSNumber = 5 + XCTAssertFalse(string.isEqual(number)) + } internal let mockASCIIStringBytes: [UInt8] = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x53, 0x77, 0x69, 0x66, 0x74, 0x21] internal let mockASCIIString = "Hello Swift!"