版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.08.25 |
前言
NSArray
是集合類型中的一種,是OC中很重要的概念,這個是我們一定會用到的對象,下面我就繼續由整體到細節,由簡單到復雜的和大家說一下它的用法。感興趣的可以看我寫的上篇幾篇。
1. NSArray簡單細說(一)—— 整體了解
2. NSArray簡單細說(二)—— 數組的創建
3. NSArray簡單細說(三)—— 數組初始化
4. NSArray簡單細說(四)—— 數組的查詢與檢索
5. NSArray簡單細說(五)—— 數組中對象的查找
6. NSArray簡單細說(六)—— 向數組中元素發送消息
一、- (ObjectType)firstObjectCommonWithArray:(NSArray<ObjectType> *)otherArray;
該方法的作用是:返回接收數組中包含的第一個對象,該對象等于另一給定數組中的一個對象。
下面我們看一下返回值:
- 返回接收數組中包含的等于
otherArray
中的對象的第一個對象。 如果沒有找到這樣的對象,返回nil。
還有幾個問題需要注意:
- 此方法使用
isEqual:
檢查對象是否相等。
下面看一下代碼
- (void)demoFirstObjectCommonWithArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@3, @4, @5];
id object = [arr firstObjectCommonWithArray:arr1];
NSLog(@"object = %@",object);
}
下面看輸出結果
2017-08-25 18:01:03.461 JJOC[3743:79129] object = 3
結論:這個簡單,但是我沒用過。
二、- (BOOL)isEqualToArray:(NSArray<ObjectType> *)otherArray;
該方法的作用就是:數組之間的比較。
對于返回值,如果otherArray
的內容等于接收數組的內容,則為YES
,否則為NO
。
如果每個陣列中的每個數組都保持相同數量的對象,并且每個數組中的給定索引對象都滿足isEqual:test
,則兩個數組具有相同的內容。
下面我們看輸出結果
- (void)demoIsEqualToArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@1, @2, @3];
BOOL result = [arr isEqualToArray:arr1];
NSLog(@"result = %d",result);
}
下面看輸出結果
2017-08-25 18:07:13.071 JJOC[4021:85472] result = 1
結論:簡單,易用。
三、- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;
該方法的作用就是:返回一個新數組,它將對象添加到數組結尾。這里還要注意:如果anObject
為nil,則會引發NSInvalidArgumentException
異常。
下面看一下代碼
- (void)demoArrayByAddingObject
{
NSArray *arr = @[@1, @2, @3];
NSArray *resultArr = [arr arrayByAddingObject:@4];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結果
2017-08-25 18:18:26.772 JJOC[4279:94632] resultArr = (
1,
2,
3,
4
)
結論:還是很簡單了。
四、- (NSArray<ObjectType> *)arrayByAddingObjectsFromArray:(NSArray<ObjectType> *)otherArray;
該方法的作用就是:返回一個新數組,它是接收數組的副本,其中包含在另一個數組中的對象添加到最后。
下面我們還是看代碼
- (void)demoArrayByAddingObjectsFromArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@4, @5, @6];
NSArray *resultArr = [arr arrayByAddingObjectsFromArray:arr1];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結果
2017-08-25 18:22:25.549 JJOC[4458:98558] resultArr = (
1,
2,
3,
4,
5,
6
)
結論:還是很簡單了。
五、- (NSArray<ObjectType> *)filteredArrayUsingPredicate:(NSPredicate *)predicate;
該方法的作用就是:針對接收數組中的每個對象評估給定的謂詞,并返回一個包含謂詞返回true的對象的新數組。
下面我們看一下參數:
-
predicate
:用于評估接收數組元素的謂詞。 -
result
:一個包含接收數組中對象的新數組,謂詞返回YES。結果數組中的對象與接收器中的順序相同。
下面我們看代碼
- (void)demoFilteredArrayUsingPredicate
{
NSArray *array1 = [NSArray arrayWithObjects:@1,@2,@3,@5,@6,@7, nil];
NSArray *array2 = [NSArray arrayWithObjects:@4,@5, nil];
// 表示篩選array1在array2中的元素!YES!其中SELF指向filteredArrayUsingPredicate的調用者。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF in %@",array2];
NSArray *resultArr = [array1 filteredArrayUsingPredicate:predicate];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結果
2017-08-25 18:34:02.156 JJOC[4892:110336] resultArr = (
5
)
結論:還是很好理解的。
六、- (NSArray<ObjectType> *)subarrayWithRange:(NSRange)range;
該方法的作用就是:返回一個包含接收數組元素的新數組,該元素在給定范圍指定的限制內。
下面還有很多需要注意:
- 如果范圍不在接收數組的元素范圍內,則會引發
NSRangeException
。例如,以下代碼示例創建一個數組,其中包含在整數的前半部分中找到的元素(假定整數存在)。
NSArray *halfArray;
NSRange theRange;
theRange.location = 0;
theRange.length = [wholeArray count] / 2;
halfArray = [wholeArray subarrayWithRange:theRange];
下面我們還是看代碼
- (void)demoSubarrayWithRange
{
NSArray *array1 = [NSArray arrayWithObjects:@1, @2, @3, @5, @6, @7, @8, @9, @10,nil];
NSArray *resultArr = [array1 subarrayWithRange:NSMakeRange(0, array1.count * 0.5)];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結果
2017-08-25 18:40:22.605 JJOC[5125:116269] resultArr = (
1,
2,
3,
5
)
結論:簡單容易很粗暴~~~
后記
未完,待續~~~