美文网首页
Foundation基础类库容器

Foundation基础类库容器

作者: wps_pro | 来源:发表于2017-05-09 16:58 被阅读0次

基础类库:容器

1.NSArray

//类方法数组创建

NSArray *array1 = [NSArray arrayWithObject:@"obj"];
NSArray *array2 = [NSArray arrayWithObjects:@"obj1", @"obj2", @"obj3", nil];
NSArray *array3 = [NSArray arrayWithArray:array2];

//实例方法创建数组

NSArray *array4 = [[NSArray alloc] initWithObjects:@"AAA", @"bbb", nil];      
 NSLog(@"array4 :%@", array4);

//数组个数

NSLog(@"array3 count :%d", [array3 count]);

//访问元素

NSLog(@"obj at index :%@", [array2 objectAtIndex:2]);

//追加(返回新的array对象)

NSArray *array5 = [array3 arrayByAddingObject:@"ccc"];   
NSLog(@"array5 :%@", array5);

//根据指定的字符串连接数组元素

NSString *joinString1 = [array5 componentsJoinedByString:@"|"];       
NSLog(@"joinString :%@",joinString1);

//是否包含指定对象

NSLog(@"isContains :%d", [array5 containsObject:@"obj2"]);

//查找某个对象所在索引

NSLog(@"indexOfObject :%d",[array5 indexOfObject:@"obj3"]);

//最后一个元素

NSLog(@"lastObejct :%@", [array5 lastObject]);

//遍历数组

for(id element in array5) {
NSLog(@"element :%@", element);
}

2.NSMutableArray

添加元素.[mutableAarray  addObject:@"hello"];
删除元素:[mutableAarray removeObject:@"hello"];
删除指定位置的元素[mutableAarray removeObjectAtIndex:2];
删除最后一个元素[mutableAarray removeLastObject];
删除所有元素.[mutableAarray removeAllObjects];
增加一些元素.[mutableAarray  addObject:@"hello"];
[mutableAarray  addObject:@"world"];
[mutableAarray  addObjectsFromArray:array];
插入元素,指定位置.[mutableAarray insertObject:@"nihao" atIndex:2];
替换元素[mutableAarray replaceObjectAtIndex:2 withObject:@"ping"]
交换元素[mutableAarray exchangeObjectAtIndex:0 withObjectAtIndex:2];
快速便利for (id str in mutableAarray)  {
NSLog(@"%@",str);
}

3.NSDictionary

//创建词典
NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];
NSInteger Count=[dictionary count];
NSLog(@"词典的个数为%ld",Count);
//得到词典中的所有key
NSEnumerator *enumeratorkey=[dictionary keyEnumerator];
for (NSObject *obj in enumeratorkey) {
NSLog(@"key为:%@",obj);
NSLog(@"通过key找到value值为:%@",[dictionary objectForKey:obj]);
}
//得到词典中的所有value值
NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];
for (NSObject *obj in enumeratorvalue) {
NSLog(@"value为:%@",obj);
}
//简便的方式创建 key排前面value排后面
NSDictionary *newDictionary=@{@"name":@"wujy",@"age":@29};
NSArray *keyArray=[newDictionary allKeys];
for (NSObject *obj in keyArray) {
NSLog(@"key的值为:%@",obj);
}
NSArray *valueArray=[newDictionary allValues];
for (NSObject *obj in valueArray) {
NSLog(@"value的值为:%@",obj);
}
//blocks插件
NSDictionary *blockDictionary=[NSDictionary dictionaryWithObjects:[[NSArray alloc] initWithObjects:@3,@15,@29,nil] forKeys:[[NSArray alloc] initWithObjects:@"IOS",@"work",@"age",nil]];
//遍历
[blockDictionary bk_each:^(id key, id obj) {
NSLog(@"使用blocks的key为:%@",key);
NSLog(@"对应的value为:%@",obj);
}];
//过滤 只在第一个符合条件时就停止
NSDictionary *matchDictionary=[blockDictionary bk_match:^BOOL(id key, id obj) {
BOOL select=[obj intValue]<10?YES:NO;
return select;
}];
NSLog(@"match符合的项为:%@",matchDictionary);
//过滤
NSDictionary *selectDictionary=[blockDictionary bk_select:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"select符合的项为%@",selectDictionary);
//反向过滤
NSDictionary *rejectDictionary=[blockDictionary bk_reject:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"reject符合的项为%@",rejectDictionary);
//对各个项进行修改
NSDictionary *mapDictinary=[blockDictionary bk_map:^id(id key, id obj) {
return [NSNumber numberWithInt:[obj intValue]+1];
}];
NSLog(@"map修改后的项为%@",mapDictinary);
//是否符合条件 返回bool
BOOL isSelected=[blockDictionary bk_any:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"%d符合条件",isSelected);
//判断是否所有的项都符合这个条件
BOOL allSelected=[blockDictionary bk_all:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"%d符合条件",allSelected);
//判断是否所有的项都不符合这个条件
BOOL noneSelected=[blockDictionary bk_none:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>50?YES:NO;
return select;
}];
NSLog(@"%d符合条件",noneSelected);

4.NSMutableDictionary

//创建一个nsmutabledictionary
NSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];
[mutableDictionary setObject:@"wujy" forKey:@"name"];
[mutableDictionary setObject:@"cnblogs.com/wujy" forKey:@"webName"];
[mutableDictionary setObject:@29 forKey:@"age"];
//得到词典中的所有key
NSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];
for (NSObject *obj in enumeratorkey) {
NSLog(@"key为:%@",obj);
NSLog(@"通过key找到value值为:%@",[mutableDictionary objectForKey:obj]);
}
//删除其中一个key
[mutableDictionary removeObjectForKey:@"name"];
NSLog(@"删除name的key以后值:%@",mutableDictionary);
[mutableDictionary removeAllObjects];
NSLog(@"删除所有以后,可变词典个数为%ld",[mutableDictionary count]);
//blocks
//过滤
NSMutableDictionary *newmutableDictionary=[NSMutableDictionary dictionaryWithDictionary:@{@"IOS":@3,@"work":@13,@"age":@29}];
[newmutableDictionary bk_performSelect:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>10?YES:NO;
return select;
}];
NSLog(@"过滤后的可变词典为(29,13)%@",newmutableDictionary);
//取反过滤
[newmutableDictionary bk_performReject:^BOOL(id key, id obj) {
BOOL select=[obj intValue]>20?YES:NO;
return select;
}];
NSLog(@"取反过滤的可变词典为(13)%@",newmutableDictionary);
//修改各个项的结果
[newmutableDictionary bk_performMap:^id(id key, id obj) {
return @([obj intValue]+1);
}];
NSLog(@"修改后的可变词典为(14)%@",newmutableDictionary);

5.NSSet

集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。

1NSSet *set= [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2[setcount];//返回集合中对象的个数
判断集合中是否拥有某个元素
1//判断集合中是否拥有@“two”2BOOL ret = [setcontainsObject:@"two"];
判断两个集合是否相等
1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2//判断两个集合是否相等3BOOL ret = [setisEqualToSet:set2];
判断set是否是set2的子集合
1NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];2//判断set是否是set2的子集合3BOOL ret = [setisSubsetOfSet:set2];
集合也可以用枚举器来遍历
1//集合也可以用枚举器来遍历2NSEnumerator * enumerator = [setobjectEnumerator];3NSString *str;4while(str =[enumerator nextObject]) {5……6}
通过数组来初始化集合(数组转换为集合)
1NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];2NSSet *set= [[NSSet alloc] initWithArray:array];
集合转换为数组
1NSArray * array2 = [setallObjects];
###6.NSMutableSet
1//可变集合NSMutableSet2NSMutableSet *set=[[NSMutableSet alloc]
init];3[setaddObject:@"one"];4[setaddObject:@"two"];5[setaddObject:@"two"];//如果添加的元素有重复,实际只保留一个
删除元素
1//删除元素2[setremoveObject:@"two"];3[setremoveAllObjects];
将set2中的元素添加到set中来,如果有重复,只保留一个
1//将set2中的元素添加到set中来,如果有重复,只保留一个2NSSet
* set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four",
nil];3[setunionSet:set2];
删除set中与set2相同的元素
1[setminusSet:set2];
3、指数集合(索引集合)NSIndexSet
1//指数集合(索引集合)NSIndexSet2NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];//集合中的数字是123
根据集合提取数组中指定位置的元素
1//根据集合提取数组中指定位置的元素2NSArray
* array = [[NSArray alloc]
initWithObjects:@"one",@"two",@"three",@"four", nil];3NSArray * newArray
= [array objectsAtIndexes:indexSet];//返回@"two",@"three",@"four"

4、可变指数集合NSMutableIndexSet

1NSMutableIndexSet *indexSet =[[NSMutableIndexSet alloc] init];2[indexSet
addIndex:0]3[indexSet addIndex:3];4[indexSet
addIndex:5];5//通过集合获取数组中指定的元素6NSArray *array = [[NSArray alloc]
initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",
nil];7NSArray *newArray = [array
objectsAtIndexes:indexSet];//返回@"one",@"four",@"six"

7.NSPointMap

......

相关文章

  • Foundation基础类库容器

    基础类库:容器 1.NSArray //类方法数组创建 //实例方法创建数组 //数组个数 //访问元素 //追加...

  • C#相关术语

    MFC(Microsoft Foundation Class)微软基础类库COM(Component Object...

  • 1、C#基础

    MFC(Microsoft Foundation Class,微软基础类库) COM(Component Obje...

  • 字符串

    字符串 【注: Swift 的String类型桥接到了基础库中的NSString类。Foundation 同时也扩...

  • swift基础语法(字符串)

    Swift 的 String类型桥接到了基础库中的 NSString类。Foundation 同时也扩展了所有 N...

  • Swift4-字符串和字符

    字符串和字符 1.Swift 的 String类型桥接到了基础库中的 NSString类。Foundation 同...

  • (转)自定义一个RunLoop

    Foundation是OC的运行时库,其核心部分就是NSRunLoop类,Foundation库将多线程封装得特别...

  • OC弱引用容器实现方案总结

    在OC中Foundation框架中的常用容器类(NSSet,NSDictionary,NSArray)及其可变子类...

  • OC学习(1)-字符串

    字符串 NSString类属于Foundation框架中字符串操作类Foundation框架是iOS开发编程的基础...

  • 3大数据结构类之——字符串(一)

    前言 OC程序必须依托于Foundation框架,Foundation框架其实就是一个类库。它包含了许多iOS/O...

网友评论

      本文标题:Foundation基础类库容器

      本文链接:https://www.haomeiwen.com/subject/cmobtxtx.html