Skip to content

Commit 58cfe37

Browse files
committed
Merge pull request #66 from brownleej/string-equality-check
Adds an implementation of isEqual to the NSString class.
2 parents b5425d1 + 1e212b1 commit 58cfe37

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

Foundation/NSString.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,11 @@ public class NSString : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, N
229229
override internal var _cfTypeID: CFTypeID {
230230
return CFStringGetTypeID()
231231
}
232+
233+
public override func isEqual(object: AnyObject?) -> Bool {
234+
guard let string = (object as? NSString)?._swiftObject else { return false }
235+
return self.isEqualToString(string)
236+
}
232237
}
233238

234239
extension NSString {

TestFoundation/TestNSString.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ class TestNSString : XCTestCase {
2323
return [
2424
("test_BridgeConstruction", test_BridgeConstruction ),
2525
("test_isEqualToStringWithSwiftString", test_isEqualToStringWithSwiftString ),
26+
("test_isEqualToObjectWithNSString", test_isEqualToObjectWithNSString ),
27+
("test_isNotEqualToObjectWithNSNumber", test_isNotEqualToObjectWithNSNumber ),
2628
("test_FromASCIIData", test_FromASCIIData ),
2729
("test_FromUTF8Data", test_FromUTF8Data ),
2830
("test_FromMalformedUTF8Data", test_FromMalformedUTF8Data ),
@@ -58,6 +60,18 @@ class TestNSString : XCTestCase {
5860
let swiftString = "literal"
5961
XCTAssertTrue(string.isEqualToString(swiftString))
6062
}
63+
64+
func test_isEqualToObjectWithNSString() {
65+
let string1: NSString = "literal"
66+
let string2: NSString = "literal"
67+
XCTAssertTrue(string1.isEqual(string2))
68+
}
69+
70+
func test_isNotEqualToObjectWithNSNumber() {
71+
let string: NSString = "5"
72+
let number: NSNumber = 5
73+
XCTAssertFalse(string.isEqual(number))
74+
}
6175

6276
internal let mockASCIIStringBytes: [UInt8] = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x53, 0x77, 0x69, 0x66, 0x74, 0x21]
6377
internal let mockASCIIString = "Hello Swift!"

0 commit comments

Comments
 (0)