在实际的项目开发中,二维数组也是常常用到的数据结构。OC中的二维数组也是通过一维数组来建立的,今天我们来详解一下如何在OC中使用二维数组。
【使用NSArray初始化二维数组】
使用NSArray初始化的一维数组和二维数组都是不可变数组。
[objc]
<embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="29" height="15" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=29&height=15" wmode="transparent">
-
import <Foundation/Foundation.h>
-
int
main(
int
argc,
const
char
char
- argv[]) {
-
@autoreleasepool
{
//定义2个一维数组;
-
NSArray
*firstRow = [[NSArray
alloc
]
initWithObjects
:
@"1"
,
@"2"
,
@"3"
,
nil
nil
];
-
NSArray
*secondRow = [[NSArray
alloc
]
initWithObjects
:
@"4"
,
@"5"
,
@"6"
,
nil
nil
];
//使用一维数组来初始化二维数组;
-
NSArray
*my
2
DArray = [[NSArray
alloc
]
initWithObjects
:firstRow,secondRow,
nil
nil
];
//输出二维数组对象;
NSLog(
@"二维数组:%@"
,my
2
DArray);
//遍历二维数组;
-
for
(
int
i =
0
; i < [my
2
DArray
count
]; i++) {
-
for
(
int
j =
0
; j < firstRow
.count
; j++) {
- NSLog(
@"二维数组元素:%@"
,[[my
2
DArray
objectAtIndex
:i] objectAtIndex :j]);
}
}
}
return
0
;
- }
打印结果如下:
。
【使用NSMutableArray初始化二维数组】
使用NSMutableArray初始化的一维数组和二维数组都是可变的,可以进行修改和插入操作;
[objc]
<embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="29" height="15" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=29&height=15" wmode="transparent">
-
import <Foundation/Foundation.h>
-
int
main(
int
argc,
const
char
char
- argv[]) {
-
@autoreleasepool
{
-
NSMutableArray
*firstRow = [[NSMutableArray
alloc
]
initWithObjects
:
@"11"
,
@"22"
,
@"33"
,
nil
nil
];
-
NSMutableArray
*secondRow = [[NSMutableArray
alloc
]
initWithObjects
:
@"44"
,
@"55"
,
@"66"
,
nil
nil
];
-
NSMutableArray
*my
2
DArray = [[NSMutableArray
alloc
]
initWithObjects
:firstRow,secondRow,
nil
nil
];
//插入一个数据
[[my
2
DArray
objectAtIndex
:
0
]
insertObject
:
@"iOS"
atIndex
:
3
];
- NSLog(
@"%@"
,my
2
DArray);
- [[my
2
DArray
objectAtIndex
:
1
]
insertObject
:
@"OC"
atIndex
:
0
];
- NSLog(
@"%@"
,my
2
DArray);
}
return
0
;
- }
打印结果如下:
。
【使用for-in快速遍历二维数组】
[objc]
<embed id="ZeroClipboardMovie_3" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="29" height="15" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=29&height=15" wmode="transparent">
-
import <Foundation/Foundation.h>
-
int
main(
int
argc,
const
char
char
- argv[]) {
-
@autoreleasepool
{
//定义2个一维数组;
-
NSArray
*firstRow = [[NSArray
alloc
]
initWithObjects
:
@"1"
,
@"2"
,
@"3"
,
nil
nil
];
-
NSArray
*secondRow = [[NSArray
alloc
]
initWithObjects
:
@"4"
,
@"5"
,
@"6"
,
nil
nil
];
//使用一维数组来初始化二维数组;
-
NSArray
*my
2
DArray = [[NSArray
alloc
]
initWithObjects
:firstRow,secondRow,
nil
nil
];
//遍历二维数组;
-
for
(
int
i =
0
; i < [my
2
DArray
count
]; i++) {
-
for
(
int
j =
0
; j < firstRow
.count
; j++) {
- NSLog(
@"二维数组元素:%@"
,[[my
2
DArray
objectAtIndex
:i] objectAtIndex :j]);
}
}
//打印某个维度的一维数组
NSLog(
@"一维数组:%@"
,[my
2
DArray
objectAtIndex
:
0
]);
//使用for-in快速遍历二维数组中的一维数组
-
for
(
NSArray
*arr in my
2
DArray) {
- NSLog(
@"二维数组中的一维数组:%@"
,arr);
}
//使用for-in快速遍历二维数组中的每一个元素
-
for
(
NSArray
*arr in my
2
DArray) {
-
for
(
NSString
*str in arr) {
- NSLog(
@"for-in结果:%@"
,str);
}
}
}
return
0
;
- }
打印结果:
。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!