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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

适合有java和C基础的同学迅速了解OC

  1. #import <Foundation/Foundation.h>  

  2. void testSet();
  3. void testDictionary();
  4.   
  5. int main(int argc, const char * argv[])  
  6. {   
  7.         NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
  8.        
  9.         testSet();
  10.         NSLog(@"\n\n------------------------------\n\n");
  11.         testDictionary();
  12.        
  13.         [pool drain];
  14.         return 0;
  15. }

  16. void testDictionary()
  17. {
  18.         // 此种方式创建集合对象,最后都要以nil结尾
  19.         NSMutableDictionary *mdict=[NSMutableDictionary dictionaryWithObjectsAndKeys:
  20.                 @"James",@"name",
  21.                 [NSNumber numberWithInteger:20],@"age",
  22.                 @"1568956556",@"phoneNo",nil];
  23.         [mdict setObject:[NSNumber numberWithFloat:66.6] forKey:@"weight"];
  24.         [mdict removeObjectForKey:@"phoneNo"];
  25.         // 根据key取value,没找到返回空
  26.         NSLog(@"name=%@,age=%d,phontNo=%@,weight=%.2f",
  27.         [mdict objectForKey:@"name"],
  28.         [[mdict objectForKey:@"age"] intValue],
  29.         [mdict objectForKey:@"phoneNo"],
  30.         [[mdict objectForKey:@"weight"] doubleValue]);
  31.        
  32.         // @方式快速创建出来的都是不可变对象
  33.         NSDictionary *dict=@{
  34.                 @"name":@"Bruce",
  35.                 @"age":[NSNumber numberWithLong:28],
  36.                 @"phoneNo":@"1868955656",
  37.                 @"weight":[NSNumber numberWithDouble:72.2]};       
  38.         NSLog(@"dict=%@",dict);
  39.        
  40.         // for循环方式遍历字典
  41.         NSArray *keys=[mdict allKeys];
  42.         int i;
  43.         for(i=0;i<[mdict count];i++)
  44.         {       
  45.                 id<NSCopying> key = [keys objectAtIndex:i];
  46.                 id val = [mdict objectForKey:key];
  47.                 NSLog(@"%@=%@",key,val);
  48.         }

  49.         // 字典自身的利用block遍历方法
  50.         [dict enumerateKeysAndObjectsUsingBlock:
  51.         ^(id key,id obj,BOOL *stop)
  52.         {
  53.                 NSLog(@"%@=%@",key,obj);
  54.         }];
  55.        
  56. }

  57. void testSet()
  58. {
  59.         NSSet *set = [NSSet setWithObjects:@"123",@"123",@"222",
  60.         [[[NSObject alloc] init] autorelease],@"333",@"444",@"222",nil];
  61.         //Set中元素是无序且唯一
  62.         NSLog(@"setCount=%d andSet=%@",[set count],set);
  63.         // anyObject多次调用返回同一个值,但这个值是不确定的
  64.         NSLog(@"[set anyObject]=%@",[set anyObject]);
  65.         NSLog(@"[set anyObject]=%@",[set anyObject]);
  66.         NSLog(@"[set anyObject]=%@",[set anyObject]);
  67.        
  68.         NSMutableSet *mset=[NSMutableSet set];
  69.         [mset addObjectsFromArray:[NSArray arrayWithObjects:
  70.         @"123",@"123",@"222",[[[NSObject alloc] init] autorelease],
  71.         @"333",@"444",@"222",nil]];
  72.         [mset removeObject:@"222"];
  73.         NSLog(@"msetCount=%d and mset=%@",[mset count],mset);
  74. }
复制代码

NSSet:
        特点:
                无序,唯一,仅限存非空的OC对象,本身初始化后内容不可变,其子类NSMutableSet为可变;
        常用方法:
                +(id)setWithObjects:(id)obj,...,nil;
                -(NSUInteger)count;
                        // 返回任意的一个对象
                -(id)anyObject;
NSMutableSet:
        常用方法:
                -(void)addObjectsFromArray:(NSArray *)from;
                -(void)removeObject:(id)obj;


NSDictionary:
        特点:
                        类似java中Map,键值对形式保存数据,无序,key唯一,key值仅限非空OC对象,
                        value值仅限OC对象,本身初始化后内容不可变,子类NSMutableDictionary可变;
        常用方法:
                +(id)dictionaryWithObjects:(NSArray *)objs forKeys:(NSArray *)keys;
                        //动态参数顺序为 val,key,val,key,...,nil
                +(id)dictionaryWithObjectsAndKeys:(id)obj,...,nil;
                @快速创建方式: //返回不可变的字典
                        @{key1:value1,key2:value2,...};
               
                                // 根据key获取值,便捷形式为 dict[key]
                -(id)objectForKey:(id<NSCopying>)key;
                                //获取保存的键值对个数
                -(NSUInteger)count;
                        //返回所有key的集合
                -(NSArray *)allKeys;
                        //利用block遍历
                -(void)enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop)block;
                       
NSMutableDictionary:
        -(void)setObject:(id)obj forKey:(id<NSCopying>)key;
        -(void)removeObjectForKey:(id)key;

2 个回复

倒序浏览
感谢大神,无私分享。
回复 使用道具 举报
请问有OC基础的完整视频吗,Q291876969
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马