Objective-Cにおける配列(NSArrayとNSMutableArray)の一般的な使い方
16226 ワード
NSArrayとNSMutableArrayの一般的な使い方
ラベル(スペース区切り):一般的な使用法
一、NSArrayの常用用法可変配列です.
1、配列の作成
1)初期作成
- (instancetype)initWithObjects:(ObjectType)firstObj, …
実行結果
2)コンビニエンス・コンストラクタの使用
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, …
実行結果
3)文字数(最後にnilを追加する必要はありません)
実行結果注意:nilは配列終了のフラグとして手動で追加しないでください.
2、配列中の要素の数を取得する
@property (readonly) NSUInteger count
実行結果
3、配列に指定された下付き文字の要素を取得する
1)初期取得
- (ObjectType)objectAtIndex:(NSUInteger)index
実行結果
2)字面量取得
実行結果
4、配列に要素が含まれているかどうかを判断する
- (BOOL)containsObject:(ObjectType)anObject
実行結果
5、配列内の要素のインデックス(つまり下付き)を返します.注意:配列に重複要素がある場合は1番目を返し、この数がない場合は未知数 を返します.
- (NSUInteger)indexOfObject:(ObjectType)anObject
実行結果
6、所定の文字列に従って文字列を分割する
- (NSArray
実行結果
7、配列内の要素を所与の文字列形式に従って完全な文字列オブジェクトにつづる
- (NSString )componentsJoinedByString:(NSString )separator
実行結果
8、小練習
所定の文字列のすべての*を抽出する.jpg
実行結果
二、NSMutableArrayの常用用法可変配列 1、配列の作成
1)初期作成
- (instancetype)initWithCapacity:(NSUInteger)numItems
2)コンビニエンス・コンストラクタの作成
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems
4)字面量作成の字面量で作成する配列は可変であるため、ここで使用する必要がある.mutableCopy
2、要素の追加
- (void)addObject:(ObjectType)anObject
実行結果
3、配列に指定された位置にオブジェクトを挿入する
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index
実行結果
4、配列からオブジェクトを削除する(配列に重複するオブジェクトがある場合はすべて削除) 1)要素ごとに削除
- (void)removeObject:(ObjectType)anObject
実行結果
2)位置別削除
- (void)removeObjectAtIndex:(NSUInteger)index
実行結果
3)最後の1つを削除
- (void)removeLastObject
実行結果
4)すべて削除
- (void)removeAllObjects
実行結果
5、要素の置換と交換
1)指定された場所の要素を指定された要素で置き換える
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject
実行結果
2)2つの指定された位置の要素を交換する
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2
実行結果
ラベル(スペース区切り):一般的な使用法
一、NSArrayの常用用法
1、配列の作成
1)初期作成
- (instancetype)initWithObjects:(ObjectType)firstObj, …
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil];
NSLog(@"arr1 = %@",arr1);
実行結果
2016-02-25 15:17:39.393 OC_NSArray NSMutableArray[1822:112530] arr1 = (
a,
b,
c
)
2)コンビニエンス・コンストラクタの使用
+ (instancetype)arrayWithObjects:(ObjectType)firstObj, …
NSArray *arr2 = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
NSLog(@"arr2 = %@",arr2);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] arr2 = (
1,
2,
3
)
3)文字数(最後にnilを追加する必要はありません)
NSArray *arr3 = @[@"mike",@"joe",@"kitty"];
NSLog(@"arr3 = %@",arr3);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] arr3 = (
mike,
joe,
kitty
)
2、配列中の要素の数を取得する
@property (readonly) NSUInteger count
NSUInteger c1 = arr1.count;
NSLog(@"c1 = %lu",c1);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] c1 = 3
3、配列に指定された下付き文字の要素を取得する
1)初期取得
- (ObjectType)objectAtIndex:(NSUInteger)index
NSString *obj1 = [arr3 objectAtIndex:0];
NSLog(@"obj1 = %@",obj1);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] obj1 = mike
2)字面量取得
NSLog(@"arr3[2] = %@",arr3[2]);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] arr3[2] = kitty
4、配列に要素が含まれているかどうかを判断する
- (BOOL)containsObject:(ObjectType)anObject
BOOL b1 = [arr1 containsObject:@"c"];
NSLog(@"b1 = %d",b1);
BOOL b_1 = [arr1 containsObject:@"m"];
NSLog(@"b_1 = %d",b_1);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] b1 = 1
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] b_1 = 0
5、配列内の要素のインデックス(つまり下付き)を返します.
- (NSUInteger)indexOfObject:(ObjectType)anObject
NSUInteger n1 = [arr1 indexOfObject:@"c"];
NSLog(@"n1 = %lu",n1);
NSUInteger n_1 = [arr1 indexOfObject:@"l"];
NSLog(@"n_1 = %lu",n_1);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] n1 = 2
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] n_1 = 9223372036854775807
6、所定の文字列に従って文字列を分割する
- (NSArray
NSString *str1 = @"www.lanou3g.com";
NSArray *arr4 = [str1 componentsSeparatedByString:@"."];
NSLog(@"arr4 = %@",arr4);
実行結果
2016-02-25 15:17:39.394 OC_NSArray NSMutableArray[1822:112530] arr4 = (
www,
lanou3g,
com
)
7、配列内の要素を所与の文字列形式に従って完全な文字列オブジェクトにつづる
- (NSString )componentsJoinedByString:(NSString )separator
NSString *str2 = [arr4 componentsJoinedByString:@"/"];
NSLog(@"str2 = %@",str2);
実行結果
2016-02-25 15:17:39.395 OC_NSArray NSMutableArray[1822:112530] str2 = www/lanou3g/com
8、小練習
所定の文字列のすべての*を抽出する.jpg
NSString *string = @"http://www.imanhua.com/Cover/2011-10/hyrz.jpg&http://www.imanhua.com/Cover/2011-09/op.jpg&http://www.imanhua.com/Cover/2012-04/yjdwb.jpg";
NSArray *netAddress = [string componentsSeparatedByString:@"&"];
NSLog(@"%@",netAddress);
for(int i = 0; i < netAddress.count; i++){
NSArray *picArr = [netAddress[i] componentsSeparatedByString:@"/"];
NSLog(@"%@",picArr[picArr.count - 1]); // count-1
}
実行結果
2016-02-25 15:17:39.395 OC_NSArray NSMutableArray[1822:112530] (
"http://www.imanhua.com/Cover/2011-10/hyrz.jpg",
"http://www.imanhua.com/Cover/2011-09/op.jpg",
"http://www.imanhua.com/Cover/2012-04/yjdwb.jpg"
)
2016-02-25 15:17:39.395 OC_NSArray NSMutableArray[1822:112530] hyrz.jpg
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] op.jpg
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] yjdwb.jpg
二、NSMutableArrayの常用用法
1)初期作成
- (instancetype)initWithCapacity:(NSUInteger)numItems
NSMutableArray *marr1 = [[NSMutableArray alloc] initWithCapacity:10];
2)コンビニエンス・コンストラクタの作成
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems
NSMutableArray *marr2 = [NSMutableArray arrayWithCapacity:10];
4)字面量作成
NSMutableArray *marr3 = @[@"a",@"b",@"c"].mutableCopy;
2、要素の追加
- (void)addObject:(ObjectType)anObject
[marr1 addObject:@"a"];
[marr1 addObject:@"b"];
[marr1 addObject:@"c"];
[marr1 addObject:@"x"];
[marr1 addObject:@"e"];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
a,
b,
c,
x,
e
)
3、配列に指定された位置にオブジェクトを挿入する
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index
[marr1 insertObject:@"x" atIndex:2];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
a,
b,
x,
c,
x,
e
)
4、配列からオブジェクトを削除する
- (void)removeObject:(ObjectType)anObject
[marr1 removeObject:@"x"];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
a,
b,
c,
e
)
2)位置別削除
- (void)removeObjectAtIndex:(NSUInteger)index
[marr1 removeObjectAtIndex:0];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
b,
c,
e
)
3)最後の1つを削除
- (void)removeLastObject
[marr1 removeLastObject];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
b,
c
)
4)すべて削除
- (void)removeAllObjects
[marr1 removeAllObjects];
NSLog(@"marr1 = %@",marr1);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr1 = (
)
5、要素の置換と交換
NSMutableArray *marr4 = @[@"a",@"b",@"c",@"d",@"c"].mutableCopy;
1)指定された場所の要素を指定された要素で置き換える
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject
[marr4 replaceObjectAtIndex:marr4.count - 1 withObject:@"e"];
NSLog(@"marr4 = %@",marr4);
実行結果
2016-02-25 15:17:39.429 OC_NSArray NSMutableArray[1822:112530] marr4 = (
a,
b,
c,
d,
e
)
2)2つの指定された位置の要素を交換する
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2
[marr4 exchangeObjectAtIndex:0 withObjectAtIndex:3];
NSLog(@"marr4 = %@",marr4);
実行結果
2016-02-25 15:17:39.430 OC_NSArray NSMutableArray[1822:112530] marr4 = (
d,
b,
c,
a,
e
)
Program ended with exit code: 0