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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

  1. #import <Foundation/Foundation.h>


  2. void OCObjectConversion();
  3. void NSDateTest();
  4. int main(int argc, const char * argv[])
  5. {
  6.         NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
  7.     //OC对象与非OC对象数据类型的转换  
  8.     OCObjectConversion();
  9.     NSLog(@"\n-------------------------\n\n");
  10.     //日期类的使用
  11.     NSDateTest();
  12.       
  13.     [pool drain];
  14.     return 0;
  15. }

  16. void NSDateTest()
  17. {
  18.         //将时间格式化成字符串的工具类
  19.         NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorelease];
  20.         //设置日期格式
  21.         [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  22.         //将符合设置日期格式的字符串转换成日期
  23.         NSDate *date=[df dateFromString:@"2015-08-07 10:10:10"];
  24.         NSLog(@"\nbeforeFormat=%@\nafterFormat=%@",date,[df stringFromDate:date]);
  25.        
  26.        
  27.         //获取当前时间
  28.         NSDate *now=[NSDate date];
  29.         //120s后
  30.         NSDate *later=[NSDate dateWithTimeIntervalSinceNow:120];
  31.         //5分钟前
  32.         NSDate *before=[NSDate dateWithTimeIntervalSinceNow:-300];
  33.         //获取离当前时间的秒数
  34.         NSTimeInterval secsGap=[later timeIntervalSinceNow];
  35.         double secsGap2=[before timeIntervalSinceNow];
  36.        
  37.         //默认按照格林威治时间打印
  38.         NSLog(@"\nnow=%@\nlater=%@,secsGap=%.2f\nbefore=%@,secsGap2=%.2f",
  39.         now,later,secsGap,before,secsGap2);
  40.        
  41.        
  42.         // 返回1970到当前日期对象时间经过的秒数,NSTimeInterval是double类型
  43.         NSTimeInterval nowSecs=[now timeIntervalSince1970];
  44.         // 用秒数来创建时间
  45.         NSDate *now2=[NSDate dateWithTimeIntervalSince1970:nowSecs];
  46.         NSLog(@"secs=%.2f,now2=%@",nowSecs,now2);
  47.        
  48.        
  49.        
  50. }

  51. void OCObjectConversion()
  52. {
  53.         int a =10;
  54.         //几种包装C中基本数据类型的方式
  55.         NSLog(@"%@-%@-%@",[NSNumber numberWithInt:a],@'\n',@(a));
  56.         //还原成基本数据类型
  57.     NSLog(@"%d-%d-%d",[[NSNumber numberWithInt:'0'] intValue],
  58.     [@10 intValue],[@(a) intValue]);
  59.    
  60.    
  61.     //OC字符串与数字的转换
  62.     NSString *numStr=[NSString stringWithFormat:@"%d",100];
  63.     int num=[numStr intValue];
  64.     NSLog(@"numStr=%@,num=%d",numStr,num);
  65.    
  66.    
  67.     //利用NSValue包装结构体
  68.     NSValue *range=[NSValue valueWithRange:NSMakeRange(0,0)];
  69.        
  70.         NSValue *point=[NSValue valueWithPoint:NSMakePoint(1,1)];
  71.        
  72.         NSSize *size=[NSValue valueWithSize:NSMakeSize(2,2)];
  73.        
  74.         NSRect *rect=[NSValue valueWithRect:NSMakeRect(0,0,3,3)];
  75.        
  76.         // 非OC对象包装成OC对象后才可保存在OC集合中
  77.         NSMutableDictionary *mdict=[NSMutableDictionary dictionary];
  78.         [mdict setObject:range forKey:@"range"];
  79.         [mdict setObject:point forKey:@"point"];
  80.         [mdict setObject:size forKey:@"size"];
  81.         [mdict setObject:rect forKey:@"rect"];
  82.        
  83.         NSString *(*rangeToStr)(NSRange)=NSStringFromRange;
  84.         NSString *(*sizeToStr)(NSSize)=NSStringFromSize;
  85.         NSString *(*pointToStr)(NSPoint)=NSStringFromPoint;
  86.         NSString *(*rectToStr)(NSRect)=NSStringFromRect;
  87.        
  88.        
  89.         NSLog(@"%@",mdict);
  90.        
  91.         NSArray *keys=[mdict allKeys];
  92.         int i;
  93.         id key,obj;
  94.         for(i=0;i<[keys count];i++)
  95.         {
  96.                 key=[keys objectAtIndex:i];
  97.                 obj=[mdict objectForKey:key];
  98.                
  99.                 //打印NSValue对象的值
  100.                 NSLog(@"%@=%@",key,obj);
  101.                
  102.                 // 还原成struct类型后打印
  103.                 if([@"range" isEqualToString:key])
  104.                 {
  105.                         NSLog(@"%@=%@",key,rangeToStr([obj rangeValue]));
  106.                 }else if([@"size" isEqualToString:key])
  107.                 {
  108.                         NSLog(@"%@=%@",key,sizeToStr([obj sizeValue]));
  109.                 }else if([@"rect" isEqualToString:key])
  110.                 {
  111.                         NSLog(@"%@=%@",key,rectToStr([obj rectValue]));
  112.                 }else if([@"point" isEqualToString:key])
  113.                 {
  114.                         NSLog(@"%@=%@",key,pointToStr([obj pointValue]));
  115.                 }
  116.         }
  117.        
  118. }
复制代码



包装类:
        负责将非OC对象包装成OC对象
       
        NSNumber:
                继承自NSValue,专门负责包装C中的基本数据类型;
                 //包装基本数据类型,便捷形式为 @10,如果是变量则@(i)
        +(id)numberWithInt:(int)i;
                        //还原成基本数据类型
        -(int)intValue;
       

        NSValue:
                用来将非OC对象类型数据包装成OC对象;
                //包装NSRange,CGPoint,CGSize,CGRect这些常用struct成NSValue对象
        +(id)valueWithPoint:(CGPoint)point;
                //还原
        -(CGRange)rangeValue;
       
NSString与基本数据类型互相准换:
//基本数据类型转字符串
NSString *numStr=[NSString stringWithFormat:@"%d",10];
int i=[numStr intValue];


日期类 NSDate:
        //获取当前时间
        +(id)date;
        //创建与指定时间间隔N秒的时间
        +(id)dateWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate*)since;
                //创建当前时间secs秒后的时间
        +(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
                //创建从1970后secs秒的时间
        +(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
                //返回当前到该时间的秒数
        -(NSTimeInterval)timeIntervalSinceNow;
          //返回1970到该时间的秒数
        -(NSTimeInterval)timeIntervalSine1970;
       
格式化日期的工具类:NSDateFormatter
                // 设置使用的日期格式
        -(void)setDateFormat:(NSString *)format;
                //日期转字符串
        -(NSString *)stringFromDate:(NSDate *)date;
                //字符串转日期
        -(NSDate *)dateFromString:(NSString *)dateStr;
       


2 个回复

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