diff --git a/Foundation/NSArray.swift b/Foundation/NSArray.swift index d6bcf79cf1..d4b16c8019 100644 --- a/Foundation/NSArray.swift +++ b/Foundation/NSArray.swift @@ -177,15 +177,14 @@ public class NSArray : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, NS /// - Experiment: This is a draft API currently under consideration for official import into Foundation /// - Note: Since this API is under consideration it may be either removed or revised in the near future public func getObjects(inout objects: [AnyObject], range: NSRange) { + objects.reserveCapacity(objects.count + range.length) + if self.dynamicType === NSArray.self || self.dynamicType === NSMutableArray.self { - if range.location == 0 && range.length == count { - objects = _storage - return - } - } - for idx in 0.. Int { diff --git a/TestFoundation/TestNSArray.swift b/TestFoundation/TestNSArray.swift index f2b8a1ee4b..1dcb8683b1 100644 --- a/TestFoundation/TestNSArray.swift +++ b/TestFoundation/TestNSArray.swift @@ -26,6 +26,7 @@ class TestNSArray : XCTestCase { ("test_BasicConstruction", test_BasicConstruction), ("test_enumeration", test_enumeration), ("test_sequenceType", test_sequenceType), + ("test_getObjects", test_getObjects), ] } @@ -70,4 +71,17 @@ class TestNSArray : XCTestCase { XCTAssertEqual(res, ["foo", "bar", "baz"]) } + func test_getObjects() { + let array : NSArray = ["foo", "bar", "baz", "foo1", "bar2", "baz3",].bridge() + var objects = [AnyObject]() + array.getObjects(&objects, range: NSMakeRange(1, 3)) + XCTAssertEqual(objects.count, 3) + let fetched = [ + (objects[0] as! NSString).bridge(), + (objects[1] as! NSString).bridge(), + (objects[2] as! NSString).bridge(), + ] + XCTAssertEqual(fetched, ["bar", "baz", "foo1"]) + } + }