IOS开发之旅IOS常用数据结构NSArrayNSMutableArrayNSDictionaryNSMutableDi.docx
《IOS开发之旅IOS常用数据结构NSArrayNSMutableArrayNSDictionaryNSMutableDi.docx》由会员分享,可在线阅读,更多相关《IOS开发之旅IOS常用数据结构NSArrayNSMutableArrayNSDictionaryNSMutableDi.docx(25页珍藏版)》请在冰豆网上搜索。
![IOS开发之旅IOS常用数据结构NSArrayNSMutableArrayNSDictionaryNSMutableDi.docx](https://file1.bdocx.com/fileroot1/2022-12/11/98f506bb-fb4e-493f-9793-0f5d6faf89c3/98f506bb-fb4e-493f-9793-0f5d6faf89c31.gif)
IOS开发之旅IOS常用数据结构NSArrayNSMutableArrayNSDictionaryNSMutableDi
IOS开发之旅-IOS常用数据结构NSArray、NSMutableArray、NSDictionary、NSMutableDi
∙NSArray
∙NSArray基本用法
voidarrayTest1()
{
//数组初始化最后必须以nil结尾,表示数组元素结束
NSArray*array1=[[NSArrayalloc]initWithObjects:
@"item0",@"item1",@"item2",@"item3",@"item4",nil];
NSLog(@"%@",array1);
/*(
item1,
item2,
item3,
item4
)*/
//获取数组元素个数
NSLog(@"arraycount:
%ld",array1.count);
/*arraycount:
4*/
//获取特定所以元素
NSLog(@"array[1]=%@",array1[1]);
/*array[1]=item1*/
NSLog(@"array[1]=%@",[array1objectAtIndex:
(NSInteger)1]);
/*array[1]=item1*/
NSLog(@"firstObject=%@",array1.firstObject);//获取第一个元素
/*firstObject=item1*/
NSLog(@"lastObject=%@",array1.lastObject);//获取最后一个元素
/*lastObject=item4*/
//拼接数组
NSLog(@"%@",[array1componentsJoinedByString:
@","]);
/*item0,item1,item2,item3,item4*/
//查找元素的索引,如果包含特定元素,返回具体索引,否则返回:
9223372036854775807
NSLog(@"%ld",[array1indexOfObject:
@"item11"]);
//是否包含特定元素
NSLog(@"%i",[array1containsObject:
@"item1"]==TRUE?
1:
0);
/*1*/
NSArray*subArray=[array1subarrayWithRange:
NSMakeRange(1,2)];
NSLog(@"%@",subArray);
/*
(
item1,
item2
)
*/
//保存数组元素到本地文件,以xml格式序列化存储
[array1writeToFile:
@"/Users/new/Desktop/array.txt"atomically:
YES];
/*
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN"":
//
item0
item1
item2
item3
item4
*/
//读取本地文件,反序列化为数组
NSArray*array2=[[NSArrayalloc]initWithContentsOfFile:
@"/Users/new/Desktop/array.txt"];
NSLog(@"%@",array2);
/*
(
item0,
item1,
item2,
item3,
item4
)
*/
//判断数组元素是否相等
BOOLresult=[array1isEqualToArray:
@[@"item0",@"item1",@"item2"]];
NSLog(@"%@",result);
/*0*/
}
∙NSArray遍历
voidarrayTest2()
{
NSArray*array1=[[NSArrayalloc]initWithObjects:
@"item0",@"item1",@"item2",@"item3",@"item4",nil];
//遍历方法1
for(intindex=0;indexNSLog(@"%@",array1[index]);
}
/*
item0
item1
item2
item3
item4
*/
//遍历方法2
for(NSString*iteminarray1){
NSLog(@"%@",item);
}
/*
item0
item1
item2
item3
item4
*/
//遍历方法3
//NSEnumerator*enumerator=[array1reverseObjectEnumerator];//逆向遍历
NSEnumerator*enumerator=[array1objectEnumerator];//正向遍历
NSString*item=nil;
while(item=[enumeratornextObject]){
NSLog(@"%@",item);
}
/*
item0
item1
item2
item3
item4
*/
//遍历方法4
[array1enumerateObjectsUsingBlock:
^(idobj,NSUIntegeridx,BOOL*stop){
NSLog(@"%ld=%@",idx,obj);
}];
/*
0=item0
1=item1
2=item2
3=item3
4=item4
*/
}
∙NSArray排序
voidarrayTest3()
{
//排序方法1,普通比较器
NSArray*array1=@[@"1",@"21",@"11",@"5",@"51",@"3"];
NSArray*array2=[array1sortedArrayUsingSelector:
@selector(compare:
)];
NSLog(@"%@",array2);
/*
(
1,
11,
21,
3,
5,
51
)
*/
//排序方法2,代码块
NSArray*array3=[array1sortedArrayUsingComparator:
^NSComparisonResult(idobj1,idobj2){
return[obj1compare:
obj2];
}];
NSLog(@"%@",array3);
/*
(
1,
11,
21,
3,
5,
51
)
*/
//排序方法3,自定义排序描述符
NSArray*originalArray=@[
@{@"page_no":
@"27",@"age":
@24},
@{@"page_no":
@"1",@"age":
@23},
@{@"page_no":
@"1",@"age":
@21},
@{@"page_no":
@"1",@"age":
@25},
@{@"page_no":
@"1",@"age":
@15},
@{@"page_no":
@"12",@"age":
@19},
@{@"page_no":
@"23",@"age":
@29},
@{@"page_no":
@"3",@"age":
@22},
@{@"page_no":
@"2",@"age":
@30},
@{@"page_no":
@"17",@"age":
@33}
];
NSSortDescriptor*alphaNumSD=[NSSortDescriptorsortDescriptorWithKey:
@"page_no"ascending:
YEScomparator:
^NSComparisonResult(NSString*string1,NSString*string2){
return[string1compare:
string2options:
NSNumericSearch];
}];
NSSortDescriptor*dataNumSD=[NSSortDescriptorsortDescriptorWithKey:
@"age"ascending:
YEScomparator:
^NSComparisonResult(iddata1,iddata2){
return[data1compare:
data2];
}];
NSArray*sortedArray=[originalArraysortedArrayUsingDescriptors:
@[alphaNumSD,dataNumSD]];
NSLog(@"%@",sortedArray);
/*
(
{
age=15;
"page_no"=1;
},
{
age=21;
"page_no"=1;
},
{
age=23;
"page_no"=1;
},
{
age=25;
"page_no"=1;
},
{
age=30;
"page_no"=2;
},
{
age=22;
"page_no"=3;
},
{
age=19;
"page_no"=12;
},
{
age=33;
"page_no"=17;
},
{
age=29;
"page_no"=23;
},
{
age=24;
"page_no"=27;
}
)
*/
//排序方法4,自定义比较方法
Person*person1=[[Personalloc]initWithFirstName:
@"hello"lastName:
@"world"age:
35];
Person*person2=[[Personalloc]initWithFirstName:
@"abc"lastName:
@"def"age:
25];
Person*person3=[[Personalloc]initWithFirstName:
@"cal"lastName:
@"kdl"age:
22];
NSArray*personArray=@[person1,person2,person3];
NSArray*tempArray=[personArraysortedArrayUsingSelector:
@selector(comparePeople:
)];
NSLog(@"%@",tempArray);
/*
(
"firstName:
abc,lastName:
def,age:
25",
"firstName:
cal,lastName:
kdl,age:
22",
"firstName:
hello,lastName:
world,age:
35"
)
*/
}
∙NSMutableArray
NSMutableArray继承NSArray,所以NSArray的所有特性NSMutableArray都有,在此基础上,NSMutableArray主要新增了添加、删除、更新、插入等特性,如下代码演示:
voidarrrayTest4()
{
NSMutableArray*mutableArray=[[NSMutableArrayalloc]initWithObjects:
@"item0",@"item1",@"item2",@"item3",@"item4",nil];
NSLog(@"%@",mutableArray);
/*
(
item0,
item1,
item2,
item3,
item4
)
*/
//添加元素
[mutableArrayaddObject:
@"item5"];
NSLog(@"%@",mutableArray);
/*
(
item0,
item1,
item2,
item3,
item4,
item5
)
*/
//插入元素
[mutableArrayinsertObject:
@"inserteditem"atIndex:
(NSInteger)1];
NSLog(@"%@",mutableArray);
/*
(
item0,
"inserteditem",
item1,
item2,
item3,
item4,
item5
)
*/
//删除元素
[mutableArrayremoveObject:
@"item5"];
NSLog(@"%@",mutableArray);
/*
(
item0,
item1,
item2,
item3,
item4
)
*/
//更新元素
[mutableArrayreplaceObjectAtIndex:
(NSInteger)5withObject:
@"replacedItem"];
NSLog(@"%@",mutableArray);
/*
(
item0,
"inserteditem",
item1,
item2,
item3,
replacedItem
)
*/
//删除所有元素
[mutableArrayremoveAllObjects];
NSLog(@"%ld",mutableArray.count);
/*0*/
}
∙NSDictionary
∙字典初始化
voidarrayTest5()
{
//字典初始化方式1
NSDictionary*dictionary1=[[NSDictionaryalloc]initWithObjectsAndKeys:
@"value0",@"key0",
@"value1",@"key1",
@"value2",@"key2",
@"value3",@"key3",
@"value4",@"key4",
nil];
NSLog(@"%@",dictionary1);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
}
*/
//字典初始化方式2
NSArray*valueArray=@[@"value0",@"value1",@"value2",@"value3",@"value4"];
NSArray*keyArray=@[@"key0",@"key1",@"key2",@"key3",@"key4"];
NSDictionary*dictionary2=[[NSDictionaryalloc]initWithObjects:
valueArrayforKeys:
keyArray];
NSLog(@"%@",dictionary2);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
}
*/
//字典初始化方式3
NSDictionary*dictionary3=@{
@"key0":
@"value0",
@"key1":
@"value1",
@"key2":
@"value2",
@"key3":
@"value3",
@"key4":
@"value4"
};
NSLog(@"%@",dictionary3);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
}
*/
//调用NSDictionary静态方法生成字典
NSDictionary*dictionary4=[NSDictionarydictionaryWithObject:
@"value0"forKey:
@"key0"];
NSLog(@"%@",dictionary4);
/*
{
key0=value0;
}
*/
NSDictionary*dictionary5=[NSDictionarydictionaryWithObjects:
valueArrayforKeys:
keyArray];
NSLog(@"%@",dictionary5);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
}
*/
NSDictionary*dictionary6=[NSDictionarydictionaryWithObjectsAndKeys:
@"value0",@"key0",@"value1",@"key1",@"value2",@"key2",@"value3",@"key3",@"value4",@"key4",nil];
NSLog(@"%@",dictionary6);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
}
*/
}
∙字典基本常用用法
voidarrayTest6()
{
NSDictionary*dictionary1=[[NSDictionaryalloc]initWithObjectsAndKeys:
@"value0",@"key0",
@"value1",@"key1",
@"value2",@"key2",
@"value3",@"key3",
@"value4",@"key4",
@"value4",@"key5",
nil];
NSLog(@"%@",dictionary1);
/*
{
key0=value0;
key1=value1;
key2=value2;
key3=value3;
key4=value4;
key5=value4
}
*/
NSLog(@"%ld",dictionary1.count);
/*5*/
//输出特定元素
NSLog(@"%@",dictionary1[@"key0"]);
NSLog(@"%@",[dictionary1objectForKey:
@"key0"]);
/*value0*/
//获取所有key
NSLog(@"%@",dictionary1.allKeys);
/*
(
key3,
key1,
key4,
key2,
key0
)
*/
//获取所有value
NSLog(@"%@",dictionary1.allValues);
/*
(
value3,
value1,
value4,
value2,
value0
)
*/
//获取特定value对应的所有key
NSLog(@"%@",[dictionary1allKeysForObject:
@"value4"]);
/*
(
key4,
key5
)
*/
//分别获取key对应的value,对于不存在的key,返回"notfound"
NSLog(@"%@",[dictionary1objectsForKeys:
@[@"key0",@"key1",@"key8"]notFoundMarker:
@"notfound"]);
/*
(
value0,
value1,
"notfound"
)
*/
NSDictionary*dictionaryOther=@{@"key0":
@"value0"};
BOOLresult=[dictionary1isEqualToDictionary:
dictionaryOther];
NSLog(@"%hhd",result);
/*0*/
//保存到本地文件
[dictionary1writeToFile:
@"/Users/new/Desktop/dictionary.txt"atomically:
YES];
/*
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN"":
//
key0
value0
key1
value1
key2
value2
key3
value3
key4