Skip to content

Commit 15a0579

Browse files
committed
Merge pull request #125 from roadfire/replaceObjectsInRange
NSMutableArray replaceObjectsInRange:withObjectsFromArray:range:
2 parents 5c21127 + 388137f commit 15a0579

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

Foundation/NSArray.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,12 @@ public class NSMutableArray : NSArray {
672672
}
673673
}
674674
}
675-
public func replaceObjectsInRange(range: NSRange, withObjectsFromArray otherArray: [AnyObject], range otherRange: NSRange) { NSUnimplemented() }
675+
public func replaceObjectsInRange(range: NSRange, withObjectsFromArray otherArray: [AnyObject], range otherRange: NSRange) {
676+
var list = [AnyObject]()
677+
otherArray.bridge().getObjects(&list, range:otherRange)
678+
replaceObjectsInRange(range, withObjectsFromArray:list)
679+
}
680+
676681
public func replaceObjectsInRange(range: NSRange, withObjectsFromArray otherArray: [AnyObject]) {
677682
if self.dynamicType === NSMutableArray.self {
678683
_storage.reserveCapacity(count - range.length + otherArray.count)

TestFoundation/TestNSArray.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class TestNSArray : XCTestCase {
3030
("test_objectAtIndex", test_objectAtIndex),
3131
("test_binarySearch", test_binarySearch),
3232
("test_replaceObjectsInRange_withObjectsFromArray", test_replaceObjectsInRange_withObjectsFromArray),
33+
("test_replaceObjectsInRange_withObjectsFromArray_range", test_replaceObjectsInRange_withObjectsFromArray_range),
3334
]
3435
}
3536

@@ -178,4 +179,23 @@ class TestNSArray : XCTestCase {
178179
XCTAssertEqual(array1[2] as? NSString, "baz2".bridge(), "Expected baz2 but was \(array1[2])")
179180
XCTAssertEqual(array1[3] as? NSString, "baz1".bridge(), "Expected baz1 but was \(array1[3])")
180181
}
182+
183+
func test_replaceObjectsInRange_withObjectsFromArray_range() {
184+
let array1 = NSMutableArray(array:[
185+
"foo1".bridge(),
186+
"bar1".bridge(),
187+
"baz1".bridge()])
188+
189+
let array2: [AnyObject] = [
190+
"foo2".bridge(),
191+
"bar2".bridge(),
192+
"baz2".bridge()]
193+
194+
array1.replaceObjectsInRange(NSMakeRange(1, 1), withObjectsFromArray: array2, range: NSMakeRange(1, 2))
195+
196+
XCTAssertEqual(array1[0] as? NSString, "foo1".bridge(), "Expected foo1 but was \(array1[0])")
197+
XCTAssertEqual(array1[1] as? NSString, "bar2".bridge(), "Expected bar2 but was \(array1[1])")
198+
XCTAssertEqual(array1[2] as? NSString, "baz2".bridge(), "Expected baz2 but was \(array1[2])")
199+
XCTAssertEqual(array1[3] as? NSString, "baz1".bridge(), "Expected baz1 but was \(array1[3])")
200+
}
181201
}

0 commit comments

Comments
 (0)