A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wdcew 中级黑马   /  2015-8-13 13:14  /  519 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

2.集合对象

  set是一组单值对象集合,它可以是可变的,也可以是不变的,操作包括:搜索、添加、删除集合中得成员(仅用于可变集合),

  集合对象包括3个类:NSSet、NSMutableSet和NSIndexSet


1)NSSet 有如下代码:(注释写明了方法的使用步骤,不在说明)


[objc] view plaincopy


  • int main(int argc, const charchar * argv[]) {  
  •   @autoreleasepool {  
  •     NSMutableSet *set = [NSMutableSet setWithObjects: @10, @123, @321, nil nil];  
  •     NSMutableSet *set1 = [NSMutableSet setWithObjects:@321, @123, @3123, nil nil];  
  •     NSMutableSet *set2 = [NSMutableSet setWithObjects:@1234, @1234, @3212,nil];  
  •       
  •     [set print];  
  •     [set1 print];  
  •     [set2 print];  
  •   
  •   //相等测试  
  •     if ([set isEqual: set1] != YES) {  
  •       printf("Not Equal");  
  •     }  
  •       
  • // 成员测试  
  •     if ([set1 containsObject: @321]== YES) {  
  •       NSLog(@" set1 contains 10");  
  •   
  • //在可变集合 set1 中添加和移除对象  
  •     }  
  •     [set1 addObject: @4];  
  •     [set2 addObject: @"Hello"];  
  •     [set1 removeObject: @123];  
  •   
  •     [set print];  
  •     [set1 print];  
  •     [set2 print];  



2)NSIndexSet 类的使用

  1.这个类用于存储有序的索引到某种数据结构,不如数组。例如使用这个类生成一份数组对象的索引号清单,代码如下:(以AddressBook类的lookup:方法进行修改。

使用方法:

indexesOfObjectsPassingTest: ^(id obj,NSUInteger idx, BOOL *stop)bolck

可以生成一个 NSIndexSet类型的对象(注:array的遍历方法为indexOfObjectsPassingTest: 生成的时一个NSUInteger类型的变量,不一样)


代码如下:


[objc] view plaincopy


  • //使用NSIndexSet类的方法,查找并返回所有与name的AddressCard存储在数组中的 索引号集合  
  • -(NSIndexSet *)lookupAll2: (NSString *)name  
  • {  
  •     //存储与Name相同的所用对象  
  •     NSMutableArray *maches = [NSMutableArray array];  
  •     NSIndexSet *result = [NSIndexSet indexSet];  
  •       
  •     result = [bookArray index: ^(id obj, NSUInteger idx, BOOLBOOL *stop){  
  •         if ([[obj name] caseInsensitiveCompare: name] == NSOrderedSame){  
  •             //如果只寻找第一个与Name相同的对象时,可以使用以下语句。  
  •             //*stop = YES;  
  •             [maches addObject: obj];  
  •             return YES;  
  •         }  
  •         else  
  •             return NO;  
  •     }];  
  •       
  •     return result;  
  •       
  • }  



1 个回复

倒序浏览
666.。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马