我想通過insertObjects:atIndexes
單個操作將一系列項目插入到NSMutableArray
中,並同時對這些項目進行排序 - 但我無法弄清楚如何構建正確的NSIndexSet
。事情是這樣的:我可以使用NSMutableArray insertObjects:atIndexes以不同的順序插入多個項目嗎?
NSMutableArray* target = [[NSMutableArray alloc]initWithObjects:@0, @100, nil];
NSArray* itemsToInsert = @[@50, @10];
NSMutableIndexSet* indexes = [[NSMutableIndexSet alloc] init];
// ??? what goes in indexes?
[target insertObjects:itemsToInsert atIndexes:indexes];
XCTAssertEqualObjects((@[@0, @10, @50, @100]), target);
The apple documentation並沒有真正解釋它是如何工作 - 但它意味着指標集將要處理的順序......如果是這樣的話,那麼在邏輯上我應該這樣做:
[indexes addIndex:1]; // insert @50 at position 1
[indexes addIndex:1]; // insert @10 at position 1, pushing @50 up to position 1
的問題是,這並不工作 - 插入投用[NSMutableArray insertObjects:atIndexes:]: count of array (2) differs from count of index set (1)
例外,我也試過:
- 插入索引範圍 - 其失敗,出現相同的異常
- 插入的
1, 2
索引 - 這具有2, 1
@[@0, @50, @10, @100]
- 插入索引的一個不正確的結果 - 這也具有
@[@0, @50, @10, @100]
這可能嗎?我可以通過預先分揀物品的清單之前,我把它們插入解決它,但它會是不錯不具有創建列表
也許我不理解你的具體需求,但不是更容易在數組的末尾添加新項目,然後使用其中一種排序函數對數組進行排序? – Merlevede
我有一個永久排序的數組,其中新增項目總是插入正確的索引。當你有數以千計的項目時,這比重新排列整個數組效率更高效。乾杯 –