NSMutableArray add object with order

前端 未结 3 841
猫巷女王i
猫巷女王i 2021-01-30 12:50

I have a NSMUtableArray which has elements, for example:

a,b,c,e

And I want to add an object d to behind c and befor

相关标签:
3条回答
  • 2021-01-30 13:11

    To inject element to known index (position) use

    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index
    

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html

    And to find position of object previously placed into NSMutableArray use

    - (int)indexOfObject:(id)anObject
    

    NSMutableArray - Get Arrays Index Integer By Searching With A String

    Section Finding Objects in an Array
    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

    0 讨论(0)
  • 2021-01-30 13:13

    You can use -[NSArray indexOfObject:inSortedRange:options:usingComparator:] to ask an NSArray for the index where an object should be inserted given an array range that’s currently sorted.

    For example, assuming the entire array is sorted::

    NSMutableArray *array = …;
    id newObject = …;
    NSComparator comparator = …;
    
    NSUInteger newIndex = [array indexOfObject:newObject
                                 inSortedRange:(NSRange){0, [array count]}
                                       options:NSBinarySearchingInsertionIndex
                               usingComparator:comparator];
    
    [array insertObject:newObject atIndex:newIndex];
    

    Since this method uses binary search, it is more efficient than iterating over all elements in the array.

    The comparator is a block object that receives two objects of type id and returns an NSComparisonResult value.

    0 讨论(0)
  • 2021-01-30 13:16

    I'd just add the new object at either end and sort the array again. If the array you're adding to is already sorted, the re-sort that moves one object is going to be about as quick as anything you'd implement yourself.

    NSMutableArray *things; // populated 
    id newObject;
    ...
    [things addObject:newObject atIndex:0];
    [things sortUsingSelector:@selector(compare:)];
    
    0 讨论(0)
提交回复
热议问题