int main(int argc, const char * argv[]) {
//
//
// SDK
// Software Development Kit
// 软件开发
// API
// Application Programming Interface
// 应用程序接口
/*
不可变字符串 Nsstring
创建之后内容和长度不可改变
*/
// 创建字符串
// NSString *str1 = [NSString alloc]initWithString:@"刘庆春"];
// NSString *str2 = [NSString stringWithString:@"微信"];
// 字面量创建字符串
// 字面量也是语法糖 syntax sugar 简化字符串的创建过程
NSString *str3 = @"renren";
//NSString *str4 = @"nihao";
//NSString *str5 = @"zhangsan";
//NSString *str6 = @"xuexue";
NSLog(@"%@",str3);
// 字符串长度
NSLog(@"length:%lu",str3.length);
// 取子串
NSString *str4 = @"iPhonePlus";
// fromIndex 从当前下表处取到字符串结尾 包含字符串下表
NSString *str5 = [str4 substringFromIndex:4];
// toIndex 从字符串开头取到某个下标结束 不包含下标
NSString *str6 = [str4 substringToIndex:4];
NSLog(@"%@",str6);//iPho
NSLog(@"%@",str5);//nePlus
// NSRange r = {3,4};// C 语言结构体定义
NSString *str8 = [str4 substringWithRange:NSMakeRange(3, 4)];
NSLog(@"str8:%@",str8);//str8:oneP
// toIndex
// Withrange
// 拼接字符串
NSString *str9 = [str4 stringByAppendingString:@"5288"];
NSLog(@"str9:%@",str9);//iPhonePlus5288
// 替换字符串
NSString *str10 = [str9 stringByReplacingOccurrencesOfString:@"Plus" withString:@"7s"];
NSLog(@"str10:%@",str10);// iPhone7s5288
// 字符串相等判断
NSString *str11 = @"123";
NSString *str12 = @"123";
if (str11 == str12) {
NSLog(@"俩个字符串对象地址相同");//俩个字符串对象地址相同
}
if ([str11 isEqualToString:str11]) {
NSLog(@"俩个字符串对象的内容相同");
}
// 判断前缀和/后缀
if ([str4 hasPrefix:@"i"]) {
NSLog(@"有前缀");
}
if ([str4 hasSuffix:@"s"]) {
NSLog(@"有后缀");
}
//有前缀
// 2015-02-05 11:50:30.834 OC_NSSing NSArray[1016:54765] 有后缀
// 字符串比较 (第一个不相同的字符串的比较)
// 定义一个比较结果变量 用来存字符串比较结果
NSString *str13 = @"iPhone6";
NSString *str14 = @"iPhone5s";
NSComparisonResult result =[str13 compare:str14];
if (result == NSOrderedAscending) {
NSLog(@"升序");
}else if(result == NSOrderedDescending)
{
NSLog(@"降序");//降序
} else{
NSLog(@"相同");
}
/*
万能转换公式
*/
NSString *str15 = [NSString stringWithFormat:@"%@ lol %ld %f",str13, 100L ,12.4];
NSLog(@"%@",str15);
// iPhone6 lol 100 12.400000
/*
练习给定一个图片文件名,判断字符串中是否以
“png”结尾,如果是就替换成“jpg”,如果 不是,就拼接”.jpg”
*/
NSString *p1 = @"pic.png";
NSString *p2 = @"photo";
if ([p1 hasSuffix:@"png"]) {
NSString *p3 = [p1 stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];// pic.jpg
NSLog(@"%@",p3);
}else
{
NSString *p4 = [p1 stringByAppendingString:@".jpg"];
NSLog(@"%@",p4);// photo.jpg
}
// if (![p2 hasSuffix:@"png" ]) {
// NSString *p5 = [p2 stringByAppendingString:@".jpg"];
// NSLog(@"%@",p5);
//
// }else
// {
// NSString *p6 = [p6 stringByReplacingOccurrencesOfString:@"png" withString:@"jpg" ];
// NSLog(@"%@",p6);
// }
//
/*
可变的字符串 NSMutableString
*/
// 创建可变字符串
NSMutableString *mStr = [NSMutableString string];
// 拼接
[mStr appendString:@"iPhone"];
// 插入
[mStr insertString:@"Android" atIndex:2];
NSLog(@" mStr : %@",mStr);// iPAndroidhone
// 删除
[mStr deleteCharactersInRange:NSMakeRange(2, 7)];
//[mStr deleteCharactersInRange:NSMakePoint(2, 7)];
NSLog(@" mStr : %@",mStr);// mStr : iPhone
/*
可变不可变的区别
不可变对象的操作都是产生了新的对象 可变对象都是再源对象基础上进行操作
*/
/*
不可变数组 NSArray 数组中只能存对象 集合类 数据类
*/
// 创建数组对象
NSArray *arr1 = [NSArray arrayWithObjects:@"数组",@"数",@"c", nil];
NSLog(@"arr1 :%@",arr1);// 打不出汉字
// 打印不出汉子
//元素个数
NSLog(@"count : %ld",arr1.count);// ount : 3
// 数组访问
NSLog(@"object:%@",[arr1 objectAtIndex:1]);// object:数
// 遍历数组
NSLog(@"======");
for (NSInteger i = 0; i < arr1.count; i++) {
NSLog(@"%@",[arr1 objectAtIndex:i]);
}
/*
可变数组 NSMutableArray
*/
// 可变数组对象
// 通常创建空容器 用来存放数据对象
NSMutableArray *mArr = [NSMutableArray array];
// 添加元素 添加再数组最后
[mArr addObject:@"lol"];
Person *p = [[Person alloc]init];
// 插入元素 按照下标位置添加元素
[mArr insertObject:p atIndex:0];
// 删除和替换
[mArr removeObjectAtIndex:1];
NSLog(@"mArr:%@",mArr);
[mArr addObject:@"abc"];
[mArr addObject:@"2432"];
[mArr addObject:@"789"];
[mArr addObject:@"chun"];
// 替换
[mArr replaceObjectAtIndex:2 withObject:@"asdm"];
// 交换
[mArr exchangeObjectAtIndex:1 withObjectAtIndex:3];
NSLog(@"mArr:%@",mArr);
// 练习
// 1、使用可变数组管理所有书籍(定义Book类,包含书 名和价格)。
// 2、数组可以添加、删除书籍。 3、可以从数组根据书名查找书籍,并修改书籍的价格 4、展示所有书籍清单(书名)。
// 创建书本对象
Book *b1 = [[Book alloc]initWithBookName:@"读者" price:12];
Book *b2 = [[Book alloc]initWithBookName:@"nihao" price:13];
// 创建容器数组
NSMutableArray *aa1 = [NSMutableArray array];
// 把书本对象添加再数组中
[aa1 addObject:b1];
[aa1 addObject:b2];
NSLog(@"%@",aa1);
// 查找
for (NSInteger i = 0; i < aa1.count; i++) {
Book *b = [aa1 objectAtIndex:i];
if ([b.bookName isEqualToString:@"nihao"]) {
b.price = 100;
}
}
NSLog(@"%@",aa1);
for (NSInteger i = 0; i < aa1.count; i++) {
NSLog(@"%@",[[aa1 objectAtIndex:i] bookName]);
}
/*
NSNumber NSValue 基础类型转换
int ->
*/
//int-> int
NSNumber *num1 = [NSNumber numberWithInt:100];
NSLog(@"%@",num1);// 对象
NSLog(@"%d",[num1 intValue]);// 非对象
// 结构体转换成对象
NSRange r = NSMakeRange(3, 4);
NSValue *value1 = [NSValue valueWithRange:r];
NSLog(@"%@",value1);
// NSValue - > NSRange
NSLog(@"%ld",[value1 rangeValue].length); // value: 结构体转换成对象
return 0;
}
@implementation Book
- (instancetype)initWithBookName:(NSString *)bookName price:(NSInteger)price
{
//self = [super init];
//if (self) {
[self setBookName:bookName];
[self setPrice:price];
// }
return self;
}
+ (instancetype)bookWithBookName:(NSString *)bookName price:(NSInteger)price
{
Book *p1 = [[Book alloc]initWithBookName:bookName price:price];
return p1;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"name:%@,price:%ld", [self bookName],[self price]];
}
@end