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 = {1, 1};
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 alloc] init];
[format setNumberStyle:NSNumberFormatterSpellOutStyle];
NSString *string = [format stringFromNumber:number];
NSLog(@"%@", string);
//科学计数法
NSNumberFormatter *format2 = [[NSNumberFormatter alloc] init];
[format2 setNumberStyle:NSNumberFormatterScientificStyle];
NSString *string1 = [format2 stringFromNumber:number];
NSLog(@"%@", string1);
//金额
NSNumberFormatter *format3 = [[NSNumberFormatter alloc] init];
[format3 setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string2 = [format3 stringFromNumber:number];
NSLog(@"%@", string2);
NSString *numberString = @"1.23E8";
//存入number
NSNumberFormatter *newNum = [[NSNumberFormatter alloc] init];
number = [newNum numberFromString:numberString];
NSLog(@"%@", number);
//转为GCFloat 取出来
CGFloat fNumber = [number doubleValue];
NSLog(@"%f",fNumber);
//******************************************************
// NSString
// "abc"; 字符串
// @"abc"; 字符串对象(语句,特征)
NSString *string3 = [[NSString alloc] initWithFormat:@"%d",23];//格式化的字符串,在内存区
NSString *string4 = @"abcdef";//常量区字符串
NSInteger value3 = 12345;
//2个字符串拼接
NSString *newString = [[NSString alloc] initWithFormat:@"%@%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:2] substringToIndex:2];
NSLog(@"%@", string8);
//
// NSRange range = {2,2}
NSString *string9 = [string5 substringWithRange:NSMakeRange(2, 2)];
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(2, 2) withString:@"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(1, 1)]; //删除
NSLog(@"%@", myString);
[myString replaceCharactersInRange:NSMakeRange(1, 1) withString:@"cd"]; //替换
NSLog(@"%@", myString);
[myString setString:@"HOO"];
NSLog(@"%@", myString);
}
return 0;
}