5. 18 Objective-C 常用数据类型(NSValue   NSNumber   NSString )的方法

1. 思考:compare 方法  怎么比的,结果是什么 

 

- (NSComparisonResult)compare:(NSNumber *)decimalNumber; 
    // compare two NSDecimalNumbers 
 

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending}; 
 

//比较字符串 
   NSString *str1 = @"abc"; 
   NSString *str2 = @"abe"; 
   NSLog(@"%ld",[str1 compare:str2]); 
//返回值:  
     1   表示 str1 > str2 
     0   表示 str1  str2 
    1  表示 str1 < str2 

 

 

2.熟悉NSDate类型,能够达到:使用NSDate计算,1970年以后的任意两天之间相隔多少天。(计算1970年以后任意2个时间的秒数差,小时差,天数差) 

 

//定义1970年后的两个日期 date1, date2 

        NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:21036800]; 

        NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:20000000]; 

         

        NSLog(@"%@", date1); 

        NSLog(@"%@", date2); 

         

        //秒数差 

        NSTimeInterval intervalSec = [date1 timeIntervalSinceDate:date2]; 

        NSLog(@"%.2f seconds", intervalSec); 

         

        //小时差 

        NSTimeInterval intervalHour = intervalSec / 3600; 

        NSLog(@"%.2f hours", intervalHour); 

         

        //天数差 

        NSTimeInterval intervalDay = intervalHour / 24; 

        NSLog(@"%.2f days", intervalDay);


课堂代码 

// 

//  main.m 

//  OC-LS3 

// 

//  Created by rectinajh on 5/18/15. 

//  Copyright (c) 2015 Rectinajh. All rights reserved. 

// 

 

#import <Foundation/Foundation.h> 

 

int main(int argc, const char * argv[]) { 

    @autoreleasepool { 

         

        NSInteger c; 

        CGFloat a; 

        NSTimeInterval time; 

        //OC基本数据类型将已知C语言类型通过typedef方式定义。 

        //所有定义类型,都会指定明确的使用环境。 

        //所有数据类型必须按照系统方法指定的类型设定。 

        //(例如:CGFloat NSTimeInterval都是double型,CGFloat用于绘图,界面,而NSTimeInterval用于时间描述) 

         

        CGPoint;//描述图像位置 

        CGSize; //描述图像大小 

         

        //假设2个时间段分别是3.2s 2.6s,求他们的平方差 

         

        NSTimeInterval time1 = 3.2; 

        NSTimeInterval time2 = 2.6; 

        NSTimeInterval result = time1 * time1 - time2 * time2; 

        NSLog(@"%f", result);

 

         

         

  /** 

         *  NSValue   NSNumber   NSString 

         */



        NSString; 

        NSValue;//描述[],数据的原始形态 

        CGPoint point = {11}; 

        NSValue *value = [NSValue valueWithPoint:point]; 

        NSNumber;//解决很多基本类型不方便解决的问题 

        //例如:四舍五入 

        CGFloat x = 1.334500; 

        NSNumber *number = [NSNumber numberWithDouble:x]; 

        NSInteger y = [number integerValue];//NSNumber转化为NSInteger 

        BOOL isOn = [number boolValue];//[].只要!=0, !=NULL即为真 

        NSLog(@"%@", number); 

         

        //a3获取,并给a4(不用C语言) 

        unichar a3 = 10; 

        NSNumber *aNumber = [NSNumber numberWithChar:a3]; 

        NSInteger a4 = [aNumber integerValue]; 

        NSLog(@"%ld", (long)a4); 

        //不需要考虑:数据溢出,精度损失等问题,系统方法自动会处理 

         

        NSNumber *num1 = [NSNumber numberWithDouble:2.49]; 

        //不能把对象相加。NSNumber不会用来运算。 

         //NSNumber用于[转化] 

         

        //简单转化 

        //实用转化 

        //科学计数法,金额表示法,拼写/拼写发音 

         

        //拼写数字,并输出[发音] 

        NSNumberFormatter *format = [[NSNumberFormatter allocinit]; 

        [format setNumberStyle:NSNumberFormatterSpellOutStyle]; 

         

        NSString *string = [format stringFromNumber:number]; 

        NSLog(@"%@", string); 

         

        //科学计数法 

        NSNumberFormatter *format2 = [[NSNumberFormatter allocinit]; 

        [format2 setNumberStyle:NSNumberFormatterScientificStyle]; 

         

        NSString *string1 = [format2 stringFromNumber:number]; 

        NSLog(@"%@", string1); 

         

        //金额 

        NSNumberFormatter *format3 = [[NSNumberFormatter allocinit]; 

        [format3 setNumberStyle:NSNumberFormatterCurrencyStyle]; 

         

        NSString *string2 = [format3 stringFromNumber:number]; 

        NSLog(@"%@", string2); 

     

         

        NSString *numberString = @"1.23E8"; 

         

        //存入number 

        NSNumberFormatter *newNum = [[NSNumberFormatter allocinit]; 

         

        number = [newNum numberFromString:numberString]; 

         

        NSLog(@"%@", number); 

         

         

        //转为GCFloat 取出来 

        CGFloat fNumber = [number doubleValue]; 

         

        NSLog(@"%f",fNumber); 

         

         

        //****************************************************** 

        // NSString 

//       "abc"; 字符串 

//       @"abc"; 字符串对象(语句,特征) 

        NSString *string3 = [[NSString allocinitWithFormat:@"%d",23];//格式化的字符串,在内存区 

         

        NSString *string4 = @"abcdef";//常量区字符串 

        NSInteger value3 = 12345; 

         

         //2个字符串拼接 

        NSString *newString = [[NSString allocinitWithFormat:@"%@%ld", string4, (long)value3 ]; 

        //便利构造 

        NSString *newString1 = [NSString stringWithFormat:@"%@%ld", string4, (long)value3]; 

        NSLog(@"%@", newString); 

        NSLog(@"%@", newString1); 

         

         

       //字符串的四大操作拼接,截取,查找,替换 

        //*拼接:初始化 initWithFormat:     stringByAppending 

        //*截取:类  sub 

        NSString *string5 = @"abcde"; 

        NSString *string6 = [string5 substringFromIndex:2];  //创建子字符串 

        NSLog(@"%@", string6); 

         

        NSString *string7 = [string5 substringToIndex:4]; 

        NSLog(@"%@", string7); 

         

        //截取cd 

        NSString *string8 = [[string5 substringFromIndex:2substringToIndex:2]; 

        NSLog(@"%@", string8); 

        // 

//        NSRange range = {2,2} 

        NSString *string9 = [string5 substringWithRange:NSMakeRange(22)]; 

        NSLog(@"%@",string9); 

         

         

        //*查找 

        NSRange range1 = [string5 rangeOfString:@"cdf"]; 

         

         

        if (range1.length > 0) { 

            NSLog(@"%@"NSStringFromRange(range1)); 

        } 

         

        if (range1.location != NSNotFound) { 

            NSLog(@"%@"NSStringFromRange(range1)); 

        } 

         

        //*替换 

        //cd换成CD 

         

        NSString *string10 = [string5 stringByReplacingOccurrencesOfString:@"cd" withString:@"CD"]; 

        NSString *string11 = [string5 stringByReplacingCharactersInRange:NSMakeRange(22withString:@"CD"]; 

        NSLog(@"%@", string10); 

        NSLog(@"%@", string11); 

         

        //删除cd 

        NSString *string12 = [string5 stringByReplacingOccurrencesOfString:@"cd"withString:@""]; 

        NSLog(@"%@", string12); 

         

         

        /** 

         *  NSMutableString  可变字符串 

         */ 

         

        NSMutableString *myString = [NSMutableString stringWithFormat:@"ABcdE"]; 

         

        NSMutableString *myString1 = [NSMutableString string]; 

         

        [myString appendFormat:@"KK"];  //拼接 

        NSLog(@"%@", myString); 

        NSRange range3 = [myString rangeOfString:@"cd"];  //查找 

        NSLog(@"{%lu %lu}",(unsigned long)range3.location, (unsigned long)range3.length); 

        [myString deleteCharactersInRange:NSMakeRange(11)]; //删除 

        NSLog(@"%@", myString); 

        [myString replaceCharactersInRange:NSMakeRange(11withString:@"cd"]; //替换 

        NSLog(@"%@", myString); 

         

        [myString setString:@"HOO"]; 

        NSLog(@"%@", myString); 

          

         

    } 

    return 0; 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值