基本数据类型

NSRange

是一个结构体,里面有两个数据成员数据类型都为NSUInteger 就是c语言中的无符号整形,一个是location表示集合的起始地址,另外一个变量是length表示从起始地址开始算多少个元素。

NSRange的三种创建方式

 //1.NSRange range;range.length = 10;range.location=3;//2.NSRange rang1 = {1,2};//3.NSRange rang2 = NSMakeRange(1, 7);

NSRange的一些方法

将NSRange转化为NSString类型

//快速打印rangeNSString *str = NSStringFromRange(range);NSLog(@"%@",str);

NSPoint

NSPoint其实就是CGPoint

NSPoint创建方式

跟NSRange一样,也是三种方法

 NSPoint p;p.x = 10;p.y = 10;NSPoint p3 = {3,2};NSPoint p2 = NSMakePoint(2, 3);

NSPoint的一些方法

将NSPoint转为NSString

NSString *str = NSStringFromPoint(p);NSLog(@"%@",str);

NSSize

本质就是CGSize,NSSize就是一个结构体,两个成员高度height,宽度width

NSSize的使用

void size(){NSSize size;size.width = 100;size.height = 90;size = NSMakeSize(3, 4);NSString *str = NSStringFromSize(size);NSLog(@"%@",str);
}

NSRect

NSRect是一个结构体,这个结构体两个成员一个是NSPoint另外一个是NSSize;

NSRect的使用

    NSRect rect;rect.origin.x = 10;rect.origin.y = 20;rect.origin = NSMakePoint(10, 33);rect.size = NSMakeSize(12, 30);rect = NSMakeRect(10, 20, 30, 40);NSLog(@"%@",NSStringFromRect(rect));

基本容器

NSString

与C++中String类的功能很像,NSString是OC中存储字符串类型的一种容器,但是NSString内容是不可变的

NSString 的实例的创建

动态方法创建

NSSting实例的创建有很多种方式

  1. 直接赋值一个字符串,此时字符串为常量字符串
  2. 分配空间再进行初始化,此时还没有赋值默认为nil,需要对其进行赋值操作
  3. 分配空间时进行有参数的构造
  4. 用c语言格式字符串对NSString进行初始化
  5. 带有格式化参数对NSString进行赋值操作
//这中方式创建是常量字符串NSString *str1 = @"A String";//先分配空间再进行初始化NSString *str2 = [[NSString alloc] init];str2 = @"A String";//分配空间后进行带有参数的构造NSString *str3 = [[NSString alloc] initWithString:@"A string"];//分配空间后将char类型的的字符串转为NSString类型进行构造NSString *str4 = [[NSString alloc] initWithUTF8String:"A string"];str4 = [NSString stringWithUTF8String:"LOUE"];//带有格式化参数的初始化NSString * str5 = [[NSString alloc] initWithFormat:@"my age is %i and my height is %.2f ",19,1.22]; NSLog(@"str5 = %@",str5);

静态方法创建

除了用动态方法可以创建字符串实例外,动态方法也可以创建字符串实例。
基本就是将init替换成string,其余都基本一样

//string with开头为静态方法,作用与相应的initWith开头的动态方法一样
str3 = [NSString stringWithString:@"LOUE"];

文件操作

读取文件内容

指定字符集为UTF-8

 //从文件中读取文本NSString *path = @"/Users/bytedance/Desktop/1.txt";NSString *str1 = [NSString stringWithContentsOfFile: path encoding:NSUTF8StringEncoding error:nil];NSLog(@"str1 = %@",str1);

如果想要指定字符集为GBK的话,需要进行类型的转化

写入文件内容

//将字符串导出到文件
void stringCreate3(){NSString *str1 = @"啦啦啦啦啦啦啦";NSString *path = @"/Users/bytedance/Desktp/1.txt";NSError *error;//第二参数如果是yes,则先创建一个临时文件将数据写入临时文件,如果中途出错,则不写入目标文件//如果文件不存在则会帮忙创建//如果文件夹布村则会报错//覆盖掉原来文件内容[str1 writeToFile: path atomically:YES encoding:NSUTF8StringEncoding error:&error];if(error){//写入失败NSLog(@"写入失败 %@" ,[error localizedDescription]);}else {NSLog(@"写入成功");}
}

NSString中的一些实例方法

大小写处理

  1. uppercaseString
  2. lowercaseString
  3. capitalizedString
void stringCreate4(){NSString *str = @"GuangDong";//转成大写NSLog(@"大写 : %@",[str uppercaseString]);//转成小写NSLog(@"小写 : %@",[str lowercaseString]);//首字母变大写,其他字母变小写NSLog(@"is %@",[str capitalizedString]);
}

字符串比较

  1. isEqualToString 比较字符串内容是否相等,不忽略大小写
  2. 按字典顺序比较字符串compare,不忽略大小写
  3. caseInsensitiveCompare,忽略大小写
void stringCreate5(){//字符串比较//检测字符串内容是否相同BOOL res = [@"abc" isEqualToString:@"ABc"];NSLog(@"%i",res);//右边比左边大为升序//左边比右边大为降序//一样大为相等//按字典序比较字符串大小//返回值为枚举类型NSComparisonResult res1 = [@"abc"compare:@"Abc"];if(res1 == NSOrderedSame){NSLog(@"一样大");}else if(res1 == NSOrderedAscending){NSLog(@"右边比左边大");}else {NSLog(@"左边比右边大");}//忽略大小写进行比较NSComparisonResult res2 = [@"abc" caseInsensitiveCompare:@"ABc"];if(res2 == NSOrderedSame){NSLog(@"一样大");}else if(res2 == NSOrderedAscending){NSLog(@"右边比左边大");}else {NSLog(@"左边比右边大");}
}

字符串搜索

  1. hasPrefix 判断字符串是否以某个前缀开头
  2. hasSuffix判断字符串是否以某个后缀结尾
  3. rangOfString查找字符串
 NSString *p = @"123455.3333xddd";//判断字符串是否以某个前缀开头NSLog(@"p is %i",[p hasPrefix:@"12"]);//判断字符串是否以某个后缀结尾NSLog(@"p is %i",[p hasSuffix:@"ddd"]);//查找字符串中是否包含某个字符串//找到返回在p中的起始位置,和长度是以结构体的形式返回,需要转换为字符串进行输出//如果不存在长度返回的是0,起始位置是一个long类型的最大值NSRange range = [p rangeOfString:@"345"];if(range.location == NSNotFound || range.length == 0){NSLog(@"找不到");}else{NSLog(@"找到");}//反向搜索NSRange range1 = [p rangeOfString:@"455" options:NSBackwardsSearch];if(range1.location == NSNotFound ){NSLog(@"找不到");}else{NSLog(@"找到");}//指定范围搜索NSRange s;s.location = 8;s.length =4;NSRange range2 = [p rangeOfString:@"455" options:NSBackwardsSearch range:s];

字符串的截取

  1. substringFromIndex从索引位置截取到末尾
  2. substringToIndex 从开始位置截取到索引位置之前
  3. componentsSeparatedByString切割字符串
void stringCreate7(){NSString *str = @"123456";//从索引3开始截取到尾部NSLog(@"%@",[str substringFromIndex:3]);//从头部开始截取到某个索引位置,不包括索引NSLog(@"%@",[str substringToIndex:4]);//截取范围内的字符串NSRange s;s.location =2;s.length = 3;NSLog(@"%@",[str substringWithRange:s]);//切割字符串NSString *str2 = @"1,2,3,4,5";//以,进行分割NSArray *array = [str2 componentsSeparatedByString:@","];//%@默认调用对象的decribtion方法打印对象中的所有元素NSLog(@"%@",array);
}

NSString与路径

  1. pathWithComponents 将数组中的元素拼接成一个路径
  2. 把一个路径分解成数组 pathComponents
  3. isAbsolutePath判断是否为绝对路径
  4. lastPathComponent返回最后一个文件夹的名称
  5. stringByDeletingLastPathComponent删除最后一个文件夹
  6. stringByAppendingPathComponent最后拼接一个目录
void stringCreate8(){//与路径相关的API//快速创建一个自动释放的数组NSMutableArray* compoments = [NSMutableArray array];[compoments addObject:@"ABC"];[compoments addObject:@"Deecc"];[compoments addObject:@"Kooo"];NSString *path =  [NSString pathWithComponents:compoments];NSLog(@"%@",path);//把一个路径分解成数组NSArray * array = [path pathComponents];NSLog(@"%@",array);//判断是否为绝对路径path = @"users/mj/test";//path的值一直没有变,改变的都是返回值NSLog(@"%i",[path isAbsolutePath]);//返回最后一个文件夹名NSLog(@"最后一个文件夹名%@",[path lastPathComponent]);//删除最后一个文件夹NSLog(@"%@",[path stringByDeletingLastPathComponent]);//最后拼接一个目录NSLog(@"%@",[path stringByAppendingPathComponent:@"abc"]);}

与拓展名相关

  1. pathExtension 获取拓展名
  2. stringByDeletingPathExtension 删除拓展名
  3. stringByAppendingPathExtension 拼接拓展名
void stringCreate9()
{//删除拓展名NSString *str = @"/User/M3/test.txt";NSLog(@"拓展名:%@",[str pathExtension]);NSLog(@"%@",[str stringByDeletingPathExtension]);//拼接拓展名NSLog(@"%@",[@"abc" stringByAppendingPathExtension:@"mp3"]);
}

与基础数据类型有关

  1. intValue将字符串转为整数
  2. length统计字符串的个数
  3. 取出对应索引位置的字符characterAtIndex
  4. UTF8String 将NSString转为c语言中char
void stringCreate10(){NSString *str = @"100";int a = [str intValue];NSLog(@"%i",a);//计算字数并不是字符数,一个中文占两个字符但只计为1NSLog(@"length = %zi",[@"我是字符串123"length]);// 取出对应索引位置的字符unichar c = [@"abc" characterAtIndex:0];NSLog(@"%c",c);//转划为c语言中的charchar *s = [@"abc" UTF8String];NSLog(@"%s",s);
}

NSMutableString

OS中的可变字符串类型,NSMutableString是NSString的子类,所以NSString的方法,NSMutableString都可以用

NSMutableString的实例化

  1. 动态方法 initWithcapacity:空间大小
  2. 静态方法 stringWithCapacity
//预先分配10个字符的存储空间NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];NSMutableString *str2 = [NSMutableString stringWithCapacity:10];

NSMutableString的一些实例化方法

  1. appendString拼接一个字符串
  2. appendFormat拼接一个格式化的字符串
  3. replaceCharactersInRange替换字符串
  4. insertString插入字符串
  5. deleteCharactersInRange删除字符串
 //拼接一个字符串[str appendString:@"567"];[str appendFormat:@"age is %i and height is %.2f ",27,1.55];//替换字符串//查到age的范围NSRange range = [str rangeOfString:@"age"];[str replaceCharactersInRange:range withString:@"no"];//插入字符串[str insertString:@"abc" atIndex:2];NSLog(@"%@",str);//删除字符串range = [str rangeOfString:@"abc"];[str deleteCharactersInRange:range];

OC中的基本容器和基本数据类型相关推荐

  1. java和oc_Java和OC中的数据容器和数组

    Java和OC中的数据容器和数组 在文章List/Set/Map的区别里我们讨论了Java的数据容器,由于其面向接口的编程特性,让我回忆了一下OC里面的「NSArray」和「NSMutableArra ...

  2. 2015.12.23 OC中的字符串(NSStringNSMutableString) 数组(NSArrayNSMutableArray)

    字符串(NSString&NSMutableString) 在OC中的字符串可分为两种:不可变字符串(NSString)和不可变字符串(NSMutableString).从字面上就可以理解这两 ...

  3. OC中的常用数据类型

    计算机中的文件分为"二进制文件"和"文本文件",其中图片.视频.音频等就是二进制文件,像".txt"的文件就是文本文件.客户端与服务器端,或 ...

  4. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

    一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...

  5. Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout

    Pytorch中的序列化容器-度消失和梯度爆炸-nn.Sequential-nn.BatchNorm1d-nn.Dropout 1. 梯度消失和梯度爆炸 在使用pytorch中的序列化 容器之前,我们 ...

  6. STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  7. C++中STL和容器、迭代器、算法之间的关系

    自学习C++以来,一直对STL.容器.迭代器.算法甚是困惑. 参考一些资料,加上自己的理解,整理如下 如果说程序等于数据结构+算法,STL就是一个小程序库,之所以说小,是因为容器模板中常用的函数有限, ...

  8. OC中数组排序的3种方法

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...

  9. 深入探究Python中的字典容器

    字典(dictionary) 我们都曾经使用过语言词典来查找不认识的单词的定义.语言词典针对给定的单词(比如 python)提供一组标准的信息.这种系统将定义和其他信息与实际的单词关联(映射)起来.使 ...

最新文章

  1. Linux-企业邮件部署
  2. java中静态变量和静态方法分别有什么特点?
  3. Django的视图层简介
  4. 一种利用ADO连接池操作MySQL的解决方案(VC++)
  5. React中ref的使用方法
  6. 重学python入门知识
  7. 机器学习实战10-Artificial Neural Networks人工神经网络简介(mnist数据集)
  8. 【python学习-2】python起步必备
  9. ICPC China Nanchang National Invitational -- D. Match Stick Game(dp)
  10. Android 获取有规律资源Id解决方案
  11. linux命令iconv_linux命令系列之iconv
  12. CSDN VIP文章
  13. php 怎么显示emoji,php中emoji转码显示的实现代码
  14. CAN 接收邮箱 掩码设置
  15. Java的企业级开发项目--OA办公系统
  16. 人际关系中的万有引力
  17. w10桌面计算机图标箭头去除,完美W10如何去除桌面图标快捷方式小箭头
  18. 动荡市场的利剑——“统计套利”
  19. poi导出Excel+图片
  20. vue中slot-scop=“scope“

热门文章

  1. windows 服务中托管asp.net core
  2. HDOJ 1012-1020
  3. STM32上使用JSON
  4. 解析css之position
  5. 面试题(C++09:Autodesk)
  6. BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具
  7. 水晶报表的统计功能-Crystal Report Sub total Per Page
  8. 循环卷积和周期卷积的关系_基于单口RAM读写的卷积电路(下)
  9. python 编码声明位置,python中的编码声明
  10. 怎么用PHP建立购物网站,如何使用PHP建设一个购物网站