NSArray全部API學習。
返回數組指定下標的元素
- ()objectAtIndex:(NSUInteger)index;
初始化數組
instancetype)init NS_DESIGNATED_INITIALIZER
初始化數組并且賦初值以及大小
- (instancetype)initWithObjects:(const [])objects count:(NSUInteger)cnt NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
@interface NSArray (NSExtendedArray)
- (NSArray *)arrayByAddingObject:()anObject;
追加其他數組返回新的數組
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
分割數組為字符串
- (NSString *)componentsJoinedByString:(NSString *)separator;
判斷數組是否存在指定元素
- ()containsObject:()anObject;
格式化屬性列表
@propertyreadonlycopyNSString *description;
//10.本地格式化為一個屬性列表
- (NSString *)descriptionWithLocale:()locale;
//11.本地格式化為一個屬性列表,并且可以設置縮進
- (NSString *)descriptionWithLocale:()locale indent:(NSUInteger)level;
//12.arraydemo對象第一個交集元素
- ()firstObjectCommonWithArray:(NSArray *)otherArray;
//13.返回指定區域的對象
- ()getObjects:( __unsafe_unretained [])objects range:(NSRange)range;
//14.獲取指定元素的索引
- (NSUInteger)indexOfObject:()anObject;
//15.指定區域獲取元素的索引
- (NSUInteger)indexOfObject:()anObject inRange:(NSRange)range;
//16.獲取指定元素的索引
- (NSUInteger)indexOfObjectIdenticalTo:()anObject;
//17.指定區域獲取元素的索引
- (NSUInteger):()anObject inRange:(NSRange)range;
//18.判斷兩個數組對象是否相等
- ()isEqualToArray:(NSArray *)otherArray;
//19.第一個對象屬性
@property (nonatomic, readonly) firstObject NS_AVAILABLE(_6, _0);
//20.最后一個對象元素屬性
@propertynonatomicreadonlyid lastObject;
//21.返回一個枚舉對象
- (NSEnumerator *)objectEnumerator;
//22.返回一個翻轉的枚舉對象
- (NSEnumerator *)reverseObjectEnumerator;
//23.升序排序數組元素
@property (readonly, ) NSData *sortedArrayHint;
//24.調用指定方法排序數組元素
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(, , *))comparator context:( *)context;
//25.調用指定方法排序數組元素
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(, , *))comparator context:( *)context hint:(NSData *)hint;
//26.指定比較方法排序數組元素
- (NSArray *)sortedArrayUsingSelector:()comparator;
//27.返回指定區域的數組元素組成新的數組元素
- (NSArray *)subarrayWithRange:(NSRange)range;
//28.保存數組對象到指定文件
- ()writeToFile:(NSString *)path atomically:()useAuxiliaryFile;
//29.保存數組對象到指定URL
- ()writeToURL:(NSURL *)url atomically:()atomically;
//30.每個數組元素都調用指定方法
- ()makeObjectsPerformSelector:()aSelector;
//31.每個數組元素都調用指定方法
- ()makeObjectsPerformSelector:()aSelector withObject:()argument;
//33.指定索引集合返回新數組
- (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes;
//34.返回指定元素數組元素
- ()objectAtIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(_8, _0);
//35.數組中的每個元素都執行代碼快中方法遍歷
- ()enumerateObjectsUsingBlock:( (^)( obj, NSUInteger idx, *stop))block NS_AVAILABLE(_6, _0);
//36.指定塊使數組每個元素都執行代碼塊中的代碼
- ()enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:( (^)( obj, NSUInteger idx, *stop))block NS_AVAILABLE(_6, _0);
//37.遍歷數組每個元素執行代碼塊中的方法
- ()enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:( (^)( obj, NSUInteger idx, *stop))block NS_AVAILABLE(_6, _0);
//38.根據條件來獲取一個NSUIndex對象,主要是根據條件進行數據遍歷使用
- (NSUInteger)indexOfObjectPassingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
NSArray *array = [NSArrayarrayWithObjects@"wendy"@"andy"@"tom"@"test"
NSInteger index = [array indexOfObjectPassingTest:^ ( tr,NSUInteger index, *te){
NSString *s = (NSString *)tr;
([@"wendy" isEqualToString:s])
return ;
return ;
NSLog(@"index==%ld=.",()index);
2015-06-09 15:44:01.982 NSArray[5064:145993] index==0=.
//39.同上面的方法相同,區別在于,這里添加了一個參數,用來表示遍歷是從前向后遍歷還是從后向前遍歷
- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
//40.這個添加了參數NSIntexSet參數,用來獲取子數組,然后使用子數組進行遍歷,處理數據
- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
//41.根據block的處理獲取一個NSIndexSet對象
- (NSIndexSet *)indexesOfObjectsPassingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
NSIndexSet *index = [array indexesOfObjectsPassingTest: ^ ( tr, NSUInteger index, *te){
NSString *s = (NSString *)tr;
([s isEqualToString:@"andy"]){
return ;
return ;
NSLog(@"%@",index);
2015-06-09 15:50:40.946 NSArray[5128:150086] [number of indexes: 1 (in 1 ranges), indexes: (1)]
//42.這個方法添加了參數,用來表示是從前向后遍歷還是從后向前遍歷
- (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
NSIndexSet * index = [array indexesOfObjectsWithOptionsNSEnumerationReversepassingTestNSUInteger index, *te){
NSString *s = (NSString *)tr;
([s isEqualToString:@"andy"]){
return ;
return ;
NSLog(@"%@",index);
2015-06-09 16:18:53.974 NSArray[5283:158602] [number of indexes: 1 (in 1 ranges), indexes: (1)]
//43.添加參數NSIndexSet用來獲取子數組,使用子數組進行遍歷
- (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:( (^)( obj, NSUInteger idx, *stop))predicate NS_AVAILABLE(_6, _0);
//44.對數組進行排序操作,參數cmptr是一個block函數塊,返回的數據類型是一個NSComparisonResult對象
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr NS_AVAILABLE(_6, _0);
//45.進行排序操作,NSSortOptions排序的參數用來表示是同時排序,還是穩定排序
- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(_6, _0);
NSArray *test = [array sortedArrayWithOptionsNSSortStableusingComparatorNSComparisonResultNSStringNSString *s2){
(s.length < s2.length){
returnNSOrderedAscending
(s.length > s2.length){
returnNSOrderedDescending
returnNSOrderedSame
NSLog(@"%@",test);
2015-06-09 16:24:34.498 NSArray[5332:161773] (
tom,
andy,
test,
wendy
)
typedef NS_OPTIONS(NSUInteger, NSBinarySearchingOptions) {
NSBinarySearchingFirstEqual = (UL << ),
NSBinarySearchingLastEqual = (UL << ),
NSBinarySearchingInsertionIndex = (UL << ),
//46.指定區域返回通過代碼塊方法的索引
- (NSUInteger)indexOfObject:()obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator)cmp NS_AVAILABLE(_6, _0); // binary search
@interface NSArray (NSArrayCreation)
//47.快速創建一個空數組
instancetype)array;
//48.指定一個元素創建數組對象
+ (instancetype)arrayWithObject:()anObject;
//49.指定個數從一個數組對象創建新的數組對象
+ (instancetype)arrayWithObjects:(const [])objects count:(NSUInteger)cnt;
//50.指定多個元素創建數組對象
+ (instancetype)arrayWithObjects:()firstObj, ... NS_REQUIRES_NIL_TERMINATION;
//51.生成新的另外一個數組
+ (instancetype)arrayWithArray:(NSArray *)array;
//52.指定個數從一個數組對象創建新的數組對象
- (instancetype)initWithObjects:()firstObj, ... NS_REQUIRES_NIL_TERMINATION;
//53.從已有數組初始化
- (instancetype)initWithArray:(NSArray *)array;
//54.從已有數組初始化(標示作用,潛復制,還是深復制)
- (instancetype)initWithArray:(NSArray *)array copyItems:()flag;
//55.從文件加載數組元素
+ (NSArray *)arrayWithContentsOfFile:(NSString *)path;
//56.從網絡地址加載數組元素
+ (NSArray *)arrayWithContentsOfURL:(NSURL *)url;
//57.從文件加載數據
- (NSArray *)initWithContentsOfFile:(NSString *)path;
//58.從文件加載數據
- (NSArray *)initWithContentsOfURL:(NSURL *)url;
/****************Mutable Array****************/
@interface NSMutableArray : NSArray
//59.
- ()addObject:()anObject;
//60.指定索引位置插入對象
- ()insertObject:()anObject atIndex:(NSUInteger)index;
//61.移除最后一個對象
- ()removeLastObject;
//62.移除指定索引位置對象
- ()removeObjectAtIndex:(NSUInteger)index;
//63.替換指定索引位置對象
- ()replaceObjectAtIndex:(NSUInteger)index withObject:()anObject;
//64.初始化數組
instancetype)init NS_DESIGNATED_INITIALIZER
//65.初始化數組并且指定大小
- (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
@interface NSMutableArray (NSExtendedMutableArray)
//66.追加新數組A到指定數組B后面
- ()addObjectsFromArray:(NSArray *)otherArray;
//67.交換指定索引之間的對象
- ()exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
//68.移除所有的數組數據
- ()removeAllObjects;
//69.移除知道那個區域指定對象
- ()removeObject:()anObject inRange:(NSRange)range;
//70.移除指定對象
- ()removeObject:()anObject;
//71.移除指定區域指定對象
- ()removeObjectIdenticalTo:()anObject inRange:(NSRange)range;
//72.移除指定對象
- ()removeObjectIdenticalTo:()anObject;
//73.移除指定索引之間的對象
- ()removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt NS_DEPRECATED(_0, _6, _0, _0);
//74.移除數組包含的指定數組的元素
- ()removeObjectsInArray:(NSArray *)otherArray;
//75.移除指定區域所有對象
- ()removeObjectsInRange:(NSRange)range;
//76.指定數組的指定區域的元素替換為數組指定區域元素
- ()replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;
//77.指定數組替換數組指定區域的元素
- ()replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
//78.AB
- ()setArray:(NSArray *)otherArray;
//79.指定方法升序比較
- ()sortUsingFunction:(NSInteger (*)(, , *))compare context:( *)context;
//80.指定方法升序比較
- ()sortUsingSelector:()comparator;
//81.指定索引集合插入數組元素
- ()insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;
//82.移除指定索引集合元素
- ()removeObjectsAtIndexes:(NSIndexSet *)indexes;
//83.替換指定索引集合的數組元素
- ()replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
//84.指定索引替換新的數組元素
- ()setObject:()obj atIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(_8, _0);
//85.指定塊方法排序數組元素
- ()sortUsingComparator:(NSComparator)cmptr NS_AVAILABLE(_6, _0);
//86.指定塊比較數組
- ()sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(_6, _0);
@interface NSMutableArray (NSMutableArrayCreation)
//87.初始化數組并指定對象容量
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
//88.指定路徑文件加載數據
+ (NSMutableArray *)arrayWithContentsOfFile:(NSString *)path;
//89.指定URL加載數據
+ (NSMutableArray *)arrayWithContentsOfURL:(NSURL *)url;
//90.指定路徑文件加載數據
- (NSMutableArray *)initWithContentsOfFile:(NSString *)path;
//91.指定URL加載數據
- (NSMutableArray *)initWithContentsOfURL:(NSURL *)url;