02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray
目录:
一、NSMutableString可变字符串
常用的操作就是crud增删改查
1 NSString只能做增查cr操作
2 NSMutableString可以做改删ud操作
3 可以改变字符串内容的功能,是NSString的子类
4 可变字符串的操作
//1 字符串的初始化stringWithString
NSMutableString* str3 = [NSMutableString stringWithString:@"abc"];
NSLog(@"str3:%@",str3);
//2 修改字符串的内容
//在指定位置添加新的字符串insertString
[str3 insertString:@"" atIndex:];//在1下标这个位置插入123
NSLog(@"str3:%@",str3);//a123bc
//替换指定位置的字符串
NSRange range = {,};//1代表修改位置 3代表修改长度
[str3 replaceCharactersInRange:range withString:@"abc"];
NSLog(@"str3:%@",str3);//aabcbc
//删除指定位置的字符串,后面的字符串会向前补齐
[str3 deleteCharactersInRange:range];
NSLog(@"str3:%@",str3);//abc
//3 两个字符串对象的操作
//追加一个字符串
NSMutableString* str4 = [NSMutableString stringWithString:@"abc"];
[str4 appendString:@"def"];
NSLog(@"str4:%@",str4);//abcdef
//按照指定格式追加一个字符串
[str4 appendFormat:@"123%@abc",@"def"];
NSLog(@"str4:%@",str4);//abcdef123defabc
二、NSNumber数字对象
1 在很多类使用的时候,如果使用数值,就需要将数值转换成对象类型,而基本数据类型,是无法使用的,所以我们就要封装基本数据类型变为对象类型,数字对象常用处理方式和使用与基本数据类型无差别。其实就是把栈区放入堆区
2 数字对象的初始化
//数字对象初始化 int i = ;//基本数字类型 NSNumber* number = [NSNumber numberWithInt:i];//对象类型 封装 // 数字对象转换为基本数据类型 //解封 int i2 = [number intValue];
练习:将基本数据类型int、char、float、double分别封装成对象类型,输出其值
练习:将对象类型,拆为基本数据类型,输出
三、NSValue
1 有时需要创建一个对象,以密切反应原始数据类型或者数据结构,这种情况就需要使用NSValue类,它可以将任何OC中有效的变量类型封装成对象类型
2 NSNumber是NSValue的子类
3 使用NSValue封装一个结构体
* 定义一个结构体类型
typedef struct{
int x;
int y;
}point1;
* 声明一个结构体变量并赋值
//结构体类型
point1 point;
point.x = ;
point.y = ;
* 通过NSValue,将结构体封装成NSValue对象
//对象类型 封装结构体
//参数1 结构体变量的内存地址 参数2 地址对应结构体类型
NSValue* value = [NSValue valueWithBytes:&point objCType:@encode(point1)];
* 把结构体对象拆成结构体类型
//拆封
point1 point2;
[value getValue:&point2];
NSLog(@"x:%d,y:%d",point2.x,point2.y);
四、NSDate日期对象
1 NSDate存储的是时间信息,默认存储的是世界标准时间(UTC),输出时需要根据时区转换为本地时间。中国大陆,香港,澳门,台湾的时间均与UTC时间差+8小时,也就是UTC+8
2 NSDate的使用
//初始化 得到当前时间UTC
NSDate* date = [[NSDate alloc] init];
NSLog(@"date:%@",date);
//得到一个时间,和当前比延迟30秒
NSDate* date2 = [NSDate dateWithTimeIntervalSinceNow:];
NSLog(@"date2:%@",date2);
//练习:得到昨天的此时此刻,明天的此时此刻
NSDate* date3 = [NSDate dateWithTimeIntervalSinceNow:*];
NSLog(@"明天此时此刻:%@",date3);
NSDate* date4 = [NSDate dateWithTimeIntervalSinceNow:-*];
NSLog(@"昨天此时此刻:%@",date4);
//得到一个过去的随机时间
NSDate* date5 = [NSDate distantPast];
NSLog(@"过去的随机时间:%@",date5);
//得到一个将来的随机时间
NSDate* date6 = [NSDate distantFuture];
NSLog(@"将来的随机时间:%@",date6);
//和过去时间对比 返回秒数
NSTimeInterval second = [date timeIntervalSince1970];
NSLog(@"second:%lf",second);
//比较两个时间 返回更早的时间
NSDate* earlierDate = [date earlierDate:date3];
NSLog(@"earlierDate:%@",earlierDate);
//比较两个时间 返回更晚的时间
NSDate* laterDate = [date laterDate:date3];
NSLog(@"laterDate:%@",laterDate);
//将世界标准时间 转换为 当地时间
//1.创建模板对象
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
//2.设置模板信息
dateFormatter.dateFormat = @"HH:mm:ss MM-dd-yyyy";//hh 12小时制 HH 24小时制
//3.通过模板对象将时间对象转换成字符串
NSString* str = [dateFormatter stringFromDate:date];
NSLog(@"%@",str);
五、NSArray数组对象
1 数组对象是一组有序对象的集合,通过索引下标取到数组中的各个元素对象,与字符串相同,数组也有可变数组和不可变数组,数组中不可以保存基本数据类型、结构体数据类型,需要使用NSNumber和NSValue进行数据封装
2 数组的使用
//初始化
NSArray* array = [NSArray array];
//数组中添加一个元素
NSArray* array2 = [NSArray arrayWithObject:@"one"];
NSLog(@"array2%@",array2);
//数组中添加多个元素
NSArray* array3 = [NSArray arrayWithObjects:@"two",@"three", nil];
NSLog(@"array3%@,%p",array3,array3);
//通过一个已有的数组 创建一个新的数组
NSArray* array4 = [NSArray arrayWithArray:array3];
NSLog(@"array4%@,%p",array4,array4);
3 数组的常见用法
//得到数组的长度
NSUInteger length = [array4 count];
//通过下标得到数组的元素
NSString* str = [array4 objectAtIndex:];
//遍历数组
for (int i = ; i < [array4 count]; i++) {
NSLog(@"array4[%d]:%@",i,[array4 objectAtIndex:i]);
}
练习:向数组中存放数据,
int i = 10;
char c = 'a';
BOOL b = YES;
Student age:18 name:zhangsan
输出数组对象
练习:创建一个学生对象Student,有年龄,姓名,创建5个学生对象,放到数组中,遍历数组。查询5个学生信息,只显示姓名为zhangsan的信息。只显示年龄为18的学生信息。
//4 在原来的数组上追加一组对象(把这一组的元素一一追加到原来的数组中)并创建新的数组
NSArray* array4 = [array arrayByAddingObjectsFromArray:array2];
//5 在原来数组上加一个数组对象并创建新的数组
NSArray* array3 = [array arrayByAddingObject:array2];
//6 将数组中的元素按指定符号连接起来变为字符串
NSString* str = [array4 componentsJoinedByString:@":"];
NSLog(@"%@",str);//one:two:three:1:2:3
//7 将字符串按指定符号变为数组
NSArray* array5 = [str componentsSeparatedByString:@":"];
NSLog(@"%@",array5);
//输出结果
/*(
one,
two,
three,
1,
2,
3
)*/
//8 判断数组中是否包含某个对象,返回值是布尔值类型
BOOL b = [array5 containsObject:@"two"];
NSLog(@"%d",b);
//9 获取某个对象在数组的下标,如果数组中不存在该对象,则返回一个垃圾值下标
NSUInteger index = [array5 indexOfObject:@"three"];
NSLog(@"%ld",index);
//10 获取数组中最后一个元素
NSString* lastObj = [array5 lastObject];
NSLog(@"%@",lastObj);
作业:查API文档学习:NSMutableArray(可变数组)、NSMutableString(可变字符串)
作业:根据身份证号码,求年龄?求出生年月日?(NSString、NSMutableString)
作业:100.100.100.100(NSArray NSMutableArray)
第一位0~100,第二位,0~100 广州
第一位100~200,第二位,0~100 北京
第一位100~200,第二位,100~200 上海
作业:学生->班级->学院->学校
8 4 2 1
* 查看所有学生信息
* 显示 姓名zhangsan
* 显示 年龄18
(NSArray NSMutableArray)
02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray的更多相关文章
- OC NSNumber和NSValue和NSDate和NSData
一 NSNumber // // main.m // 07-NSNumber // // Created by apple on 13-8-12. // Copyright (c) 2013年 itc ...
- Objective-C( Foundation框架 一 NSNumber(NSValue))
NSNumber: 是OC中处理数字的一个类 NSValue是NSNumber的子类 如何处理: 把int,float,double 包装成一个对象 使用NSNumber的好处: 可以把基本数据类型 ...
- oc77--结构体,NSNumber,NSValue,NSDate,NSCalendar
// // main.m // OC中的常用结构体 // #import <Foundation/Foundation.h> int main(int argc, const char * ...
- NSNumber、NSValue、NSDate、NSObject
注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...
- [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...
- _int、NSInteger、NSUInteger、NSNumber的区别和联系
1.首先先了解下NSNumber类型: 苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/F ...
- 85、int 、NSInteger、NSUInteger、NSNumber的区别和联系
NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, in ...
- 【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的差别和联系
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/weasleyqi/article/details/33396809 1.首先先了解下NSNumber ...
- 02:Sysbench基准压测(oltp_update_index.lua、oltp_update_non_index.lua)my.cnf
目录 Sysbench 基准压测 my.cnf 一.Sysench测试前准备 1.1.压测环境 二.进行OLTP_update测试 2.1.安装压测工具sysbench 2.2.执行压测 三.执行结果 ...
随机推荐
- Codeforces Round #261 (Div. 2)——Pashmak and Buses
题目链接 题意: n个人,k个车,d天.每一个人每天能够坐随意一个车.输出一种情况保证:不存在两个人,每天都在同一辆车上 (1 ≤ n, d ≤ 1000; 1 ≤ k ≤ 109). 分析: 比赛中 ...
- 编写可维护的JavaScript—语句和表达式&变量、函数和运算符
语句和表达式 所有的块语句都应当使用花括号.包括: if for while do…while… try…catch…finally //不好的写法 if (condition) doSomethin ...
- 关于php析构函数__destruct()的问题
1.背景:在一次输出错误信息,引入Componets\下的ErrorCode的类文件报错,报错的信息是该类找不到:然而那个类文件明明存在的阿,怎么会报错呢? 2.解决过程:看类加载器如何加载该类.通过 ...
- 查看Oracle数据库某用户的连接信息
执行以下语句可查出用户TJAMIS_LXF连接信息: select schemaname, osuser, process, machine, port, terminal, program from ...
- mobilize扁平化的fullPage.js类工具使用心得
可以生成一个fullPage效果的主页,但是列表页面和内容页面呢? 主页中的block,可以选择多种组建生成.甚至连form都有: 应该改造其源代码,动态化和cms系统化,添加二三级页面模板: == ...
- java注解入门(含源码下载)
注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. ...
- 南阳师范学院ACM官方博客使用说明
登录之后跳到如下页面: 点击博客进入如下页面: 这里每个人都有一个专栏,大家可以把自己写得博客放到自己的专栏下,同时也可以查看其他人写的博客,相互交流! 在发表博客的时候,选择个人分类中自己的专栏即可 ...
- 在myeclipse中修改svn帐户
把C:\Users\Administrator\AppData\Roaming\Subversion\auth\这个文件中所有文件删除 然后在myeclipse中同步会让你输入用户名和密码
- HYSBZ 2818 gcd
/** 大意: 给定整数N,1<= x,y <= N 求解有多少gcd(x,y) 为素数 n=10^7 思路: 首先考虑到n 如此之大,用的快速求欧拉函数. 先默认 y〉x 分析: gcd ...
- Java疯狂讲义(四)