OC中的基本容器和基本数据类型

基本数据类型

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];

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python程序开发总结_python开发总结

两本不错的书:《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。《Python核心编程》:介绍的比较深入,关键是,对Python很多高级特性都有介绍。一个开源代码:openstack,关…

Centos7通过yum安装jsoncpp库

拒绝下载软件包 一堆网上下载安装包,为了编译暗转包又下载插件,是真麻烦 看看有没有jsoncpp的相关库 $ yum list | grep jsoncpp-devel然后执行这两句,就完了 yum install jsoncpp.x86_64 yum install jsoncpp.devel.x86-64多简单

作为唯一索引_Mysql什么情况下不走索引?

本文基于Mysql5.7版本和InnoDB存储引擎。1、InnoDB索引组织表在InnoDB引擎中,表都是按照主键顺序组织存放的,这种存放方式的表称为索引组织表。InnoDB存储引擎中的表,都有主键,如果没有显式声明主键,则采取以下措施&am…

python捕获全局异常统一管理_python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中...

使用sys.excepthook函数进行全局异常的获取。1. 使用MessageDialog实现异常显示;2. 使用logger把捕获的异常信息输出到日志中;步骤:定义异常处理函数, 并使用该函来替换掉系统的内置处理函数;对于threading.py的异常捕…

r语言系统计算上是奇异的_R语言实现并行计算

Python作为多线程的编程语言在并行方面相对于R语言有很大的优势,然而作为占据统计分析一席之地的R语言自然不能没有并行计算的助力。那么我们来看下在R语言中有哪些并行的包:隐式并行:OpenBLAS,Intel MKL,NVIDIA cuBLA…

cansina 目录_dirmap - 一个高级web目录、文件扫描工具-华盟网

Dirmap一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑需求分析经过大量调研,总结一个优秀的web目录扫描工具至少具备以下功能:并发引擎能使用字典能纯爆破能爬取页面动态生成字典能fuzz扫描自定义请求自定义响应结…

唯有自己变得强大_物竞天择,适者生存,唯有强大自己,方能百毒不侵

物竞天择,适者生存,这是亘古不变的道理。面对生活中的困难,人生路上的挫折,我们只有足够坚强,足够勇敢,足够强大,才能战胜这一切。人活着要明白,你所有的负面,都源于你的…

树莓派c语言运行_树莓派完成简单的编程(四)

在上一篇文章中,我们学习了Vi文本编辑器,那么用它可以实现什么功能呢?树莓派python以及c语言编程这里我选择了最简单和很流行的两种编程语言:C语言和Python。实现最简单的功能,输出hello world。Python编程简介Python是…

mysql 读写引擎_揭秘MySQL存储引擎spider

转自:兴趣部落​buluo.qq.com导读: Spider是为MySQL/MariaDB开发的一个特殊引擎,具有内嵌分片功能。现在它已经被集成到MariaDB10.0及以上版本中,作为MariaDB的一个新的主要性。Spider的主要功能是将数据分散到多个后端节点&#…

python中的与或非_「Python基础」 While 循环语句

Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while 判断条件:执行语句……执行语句可以是单个语句或语句块。判断条件可以是任何表达式&…

lamp mysql大小限制_LAMP 调优之:MySQL 服务器调优

关于 MySQL 调优有 3 种方法可以加快 MySQL 服务器的运行速度,效率从低到高依次为:替换有问题的硬件。对 MySQL 进程的设置进行调优。对查询进行优化。替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源。不过这种解决方…

go定时器 每天重复_Go语言学习基础-定时器、计时器

Timer计时器如果希望在将来的某个时间点执行Go代码,或者在某个时间间隔重复执行Go代码,使用Go内置的timer和ticker功能。先看定时器timer,然后再看计时器ticker。定时器代表未来的单个事件。告诉定时器需要等待多长时间,它返回一个…

html类名定义规则_HTML入门笔记1

HTML 是谁发明的?Tim Berners-LeeHTML起手式&#xff1a;HTML起手式 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

mysql主从虚拟机_虚拟机centos7Mysql实现主从配置

环境搭建在虚拟机上和创建两个一模一样的centos7系统&#xff0c;并安装相同版本的mysql(可以先创建一个再克隆)在master上操作登录mysqlmysql -u root -p使用mysqluse mysql;创建用户CREATE USER lystbc1% IDENTIFIED BY Lys135426tbc;给用户授权GRANT REPLICATION SLAVE ON *…

怎样检测mysql5.5安装成功_64位wiN7系统中装配MySQL5.5.17(测试安装成功哦!)

64位wiN7系统中安装mysql5.5.17(测试安装成功哦&#xff01;&#xff01;~~)下载地址&#xff1a;[url] http://www.mysql.com/downloads/mysql/[/url]下载的话需要登录,你只需按照要求注册一个账号,然后下载即可.我下载的是mysql-5.5.17-winx64.msi版本.安装步骤:Step 1. Mysq…

xcode 创建模拟器_Xcode编译WebKit

下载WebKit源码1)进入https://webkit.org/2)点击页面的 Get Started 进入新页面&#xff0c;如下图所示3)点击 Getting the code 进入新页面&#xff0c;如下图所示4)在源码下载页面&#xff0c;有多种下载方式&#xff0c;包括直接下载代码zip包&#xff0c;通过SVN下载&#…

mysql iscsi_iscsi共享存储的简单配置和应用

1、环境介绍SCSI(Small Computer System Interface)是块数据传输协议&#xff0c;在存储行业广泛应用&#xff0c;是存储设备最基本的标准协议。从根本上说&#xff0c;iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法&#xff0c;ISCSI使用以太网协议传送SCSI命…

request mysql 接口_TP5接口开发

开启debug调试模式(正式上线建议关闭)config.php// 应用调试模式app_debug > true,设置输出类型index.phpnamespace app\index\controller;class Index{public function index(){$data [name > steven, age > 24];return json([code > 0, msg > 操作成功, data…

django和mysql写注册_Django电商项目---完成注册页面和用户登录

完成基本的创建项目、用户注册、登录、注销功能创建Django项目,创建df_user的App创建静态文件夹static(跟manage.py保持在同一级别下)复制静态文件(css images js)到static路径下修改settings.py文件修改templates路径修改数据库新添加静态文件加载路径Pycharm连接mysql数据库…

命令行进入指定目录_VIM学习笔记 操作目录(Manipulate Directory)

在目录间移动使用以下命令&#xff0c;可以显示当前所在的目录&#xff1a;:pwd使用以下命令&#xff0c;在Linux下可以进入HOME目录&#xff0c;而在Windows下则显示当前所在目录&#xff1a;:cd使用以下命令&#xff0c;可以进入指定的目录&#xff1a;:cd D:tepm使用以下命令…