版本記錄
版本號 | 時(shí)間 |
---|---|
V1.0 | 2017.08.25 |
前言
NSArray
是集合類型中的一種,是OC中很重要的概念,這個(gè)是我們一定會用到的對象灼擂,下面我就繼續(xù)由整體到細(xì)節(jié),由簡單到復(fù)雜的和大家說一下它的用法觉至。感興趣的可以看我寫的上篇幾篇剔应。
1. NSArray簡單細(xì)說(一)—— 整體了解
2. NSArray簡單細(xì)說(二)—— 數(shù)組的創(chuàng)建
3. NSArray簡單細(xì)說(三)—— 數(shù)組初始化
4. NSArray簡單細(xì)說(四)—— 數(shù)組的查詢與檢索
5. NSArray簡單細(xì)說(五)—— 數(shù)組中對象的查找
6. NSArray簡單細(xì)說(六)—— 向數(shù)組中元素發(fā)送消息
一、- (ObjectType)firstObjectCommonWithArray:(NSArray<ObjectType> *)otherArray;
該方法的作用是:返回接收數(shù)組中包含的第一個(gè)對象,該對象等于另一給定數(shù)組中的一個(gè)對象。
下面我們看一下返回值:
- 返回接收數(shù)組中包含的等于
otherArray
中的對象的第一個(gè)對象。 如果沒有找到這樣的對象晶府,返回nil。
還有幾個(gè)問題需要注意:
- 此方法使用
isEqual:
檢查對象是否相等感挥。
下面看一下代碼
- (void)demoFirstObjectCommonWithArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@3, @4, @5];
id object = [arr firstObjectCommonWithArray:arr1];
NSLog(@"object = %@",object);
}
下面看輸出結(jié)果
2017-08-25 18:01:03.461 JJOC[3743:79129] object = 3
結(jié)論:這個(gè)簡單,但是我沒用過。
二、- (BOOL)isEqualToArray:(NSArray<ObjectType> *)otherArray;
該方法的作用就是:數(shù)組之間的比較细层。
對于返回值,如果otherArray
的內(nèi)容等于接收數(shù)組的內(nèi)容唬涧,則為YES
,否則為NO
盛撑。
如果每個(gè)陣列中的每個(gè)數(shù)組都保持相同數(shù)量的對象碎节,并且每個(gè)數(shù)組中的給定索引對象都滿足isEqual:test
,則兩個(gè)數(shù)組具有相同的內(nèi)容抵卫。
下面我們看輸出結(jié)果
- (void)demoIsEqualToArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@1, @2, @3];
BOOL result = [arr isEqualToArray:arr1];
NSLog(@"result = %d",result);
}
下面看輸出結(jié)果
2017-08-25 18:07:13.071 JJOC[4021:85472] result = 1
結(jié)論:簡單狮荔,易用。
三介粘、- (NSArray<ObjectType> *)arrayByAddingObject:(ObjectType)anObject;
該方法的作用就是:返回一個(gè)新數(shù)組殖氏,它將對象添加到數(shù)組結(jié)尾。這里還要注意:如果anObject
為nil姻采,則會引發(fā)NSInvalidArgumentException
異常雅采。
下面看一下代碼
- (void)demoArrayByAddingObject
{
NSArray *arr = @[@1, @2, @3];
NSArray *resultArr = [arr arrayByAddingObject:@4];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結(jié)果
2017-08-25 18:18:26.772 JJOC[4279:94632] resultArr = (
1,
2,
3,
4
)
結(jié)論:還是很簡單了。
四慨亲、- (NSArray<ObjectType> *)arrayByAddingObjectsFromArray:(NSArray<ObjectType> *)otherArray;
該方法的作用就是:返回一個(gè)新數(shù)組婚瓜,它是接收數(shù)組的副本,其中包含在另一個(gè)數(shù)組中的對象添加到最后刑棵。
下面我們還是看代碼
- (void)demoArrayByAddingObjectsFromArray
{
NSArray *arr = @[@1, @2, @3];
NSArray *arr1 = @[@4, @5, @6];
NSArray *resultArr = [arr arrayByAddingObjectsFromArray:arr1];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結(jié)果
2017-08-25 18:22:25.549 JJOC[4458:98558] resultArr = (
1,
2,
3,
4,
5,
6
)
結(jié)論:還是很簡單了巴刻。
五、- (NSArray<ObjectType> *)filteredArrayUsingPredicate:(NSPredicate *)predicate;
該方法的作用就是:針對接收數(shù)組中的每個(gè)對象評估給定的謂詞蛉签,并返回一個(gè)包含謂詞返回true的對象的新數(shù)組胡陪。
下面我們看一下參數(shù):
-
predicate
:用于評估接收數(shù)組元素的謂詞。 -
result
:一個(gè)包含接收數(shù)組中對象的新數(shù)組碍舍,謂詞返回YES柠座。結(jié)果數(shù)組中的對象與接收器中的順序相同。
下面我們看代碼
- (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的調(diào)用者愚隧。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF in %@",array2];
NSArray *resultArr = [array1 filteredArrayUsingPredicate:predicate];
NSLog(@"resultArr = %@", resultArr);
}
下面看輸出結(jié)果
2017-08-25 18:34:02.156 JJOC[4892:110336] resultArr = (
5
)
結(jié)論:還是很好理解的。
六、- (NSArray<ObjectType> *)subarrayWithRange:(NSRange)range;
該方法的作用就是:返回一個(gè)包含接收數(shù)組元素的新數(shù)組狂塘,該元素在給定范圍指定的限制內(nèi)录煤。
下面還有很多需要注意:
- 如果范圍不在接收數(shù)組的元素范圍內(nèi),則會引發(fā)
NSRangeException
荞胡。例如妈踊,以下代碼示例創(chuàng)建一個(gè)數(shù)組,其中包含在整數(shù)的前半部分中找到的元素(假定整數(shù)存在)泪漂。
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);
}
下面看輸出結(jié)果
2017-08-25 18:40:22.605 JJOC[5125:116269] resultArr = (
1,
2,
3,
5
)
結(jié)論:簡單容易很粗暴~~~
后記
未完廊营,待續(xù)~~~