文章目录

  • OC里的字符串
  • NSString 和 NSMutableString
    • NSString 的功能
      • NSString-功能创建的三种方式
      • NSString-的常用功能
        • NSRange 变量
    • 可变字符串-NSMutableString
  • 日期与时间(NSDate)
    • NSDate 对象
      • NSDate 类的各个方法
      • NSDate方法代码的解释
    • 日期格式器(NSDate Formatter)
      • NSDate Formatter调用
      • 日历(NSCalendar) 与 (日期组件NSDatecomponents)
        • 两个类的作用
        • 从NSDate对象中分开获取各时间字段 的数值的方法如下
        • 使用各时间字段的数值来初始化 NSDate 对象的步骤如下。
          • 演示

OC里的字符串

NSString 和 NSMutableString

  • OC中的字符串
    字符串就是一连串的字符序列,OC中有2个字符串:
    NSString 和 NSMutableString
  • 其中 NSString是字符序列不可变的字符串
  • NSMutableString 代表了字符序列可以变的字符串

NSString 的功能

NSString 代表了字符序列不可变的字符串,NSString 的功能如下

  • 创建字符非,创建字行串既可使用以 init 开头的实例方法,也可使用以 string 开头的类方法,当然也可以直接用@的形式给出字符串直接量。
  • 读取文件或网络 URL 来初始化字符串。
  • 将字符建内容号入文件或 URL•
  • 获取字符串长度,既可获取字符串肉包括的字符个数,也可获收字符串包括的字节个数。
  • 获取字符串中的字符或字节,既可获取指定位置的字符,也可铁收指定范围的字符
  • 获取字符串对应的C风格字符串
  • 连接字符串。
  • 分隔字符串
    •查找字符串内指定的字符和子串。替换字符串。
  • 比较字符串,
    字符串大小比较。对字符串中的字符进行大小写转换。

NSString-功能创建的三种方式

  • 将一个Unicode数组值抓转化字符串
  • 把c风格字符串转化为 NSString对象
  • 读取文件初始化 NSString对象
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {//示例3种创建NSString对象的方式@autoreleasepool {unichar data[6] = {1,2,3,4,5,6};//1. unicode 初始化字符串// 把数组转化成对应的 字符NSString* str = [[NSString alloc] initWithCharacters:data length:6];NSLog(@"%@", str);//2.将c风格的字符串转化为NSString 对象char *cstr = "hello ,3G!";NSString* str2 = [NSString stringWithUTF8String: cstr];NSLog(@"%@", str2);//3.将字符串写入指定文件[str2 writeToFile:@"myFile,txt"atomically:YESencoding:NSUTF8StringEncodingerror:nil];// 读取文件内容,用文件内容初始化字符串NSString *str3 = [NSString stringWithContentsOfFile:@"NSStringTest.m"encoding:NSUTF8StringEncodingerror:nil];NSLog(@"%@", str3);}return 0;
}
2022-05-21 20:10:36.914213+0800 OC-字符串[5723:868393] \^A\^B\^C\^D\^E\^F
2022-05-21 20:10:36.914410+0800 OC-字符串[5723:868393] hello ,3G!
2022-05-21 20:10:36.914916+0800 OC-字符串[5723:868393] (null)
Program ended with exit code: 0

NSString-的常用功能

创建一个字符串必然要使用它,接下来就看调用NSString*的功能性方法不多赘述

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {@autoreleasepool {NSString* str = @"hello";NSString* book = @"《iOS小白书》";//1.在str后面追加字符串// 原来的字符串对象不变,新生成的字符串赋值给str变量str = [str stringByAppendingString:@" ,孟好!"];NSLog(@"%@", str);// 2.获取字符串对应的c风格const char *cstr = [str UTF8String];NSLog(@"c语言的字符串 :%s", cstr);// 3.字符串后追加变量 的字符串// 原来的字符串对象不变,新生成的字符串赋值给str变量,注意和1的区别str = [str stringByAppendingFormat:@"%@适合3g iOS组的豹子阅读", book];NSLog(@"%@", str);//4.NSLog(@"str的字符个数为 %lu", [str length]);NSLog(@"str按照 UTF-8 字符集解码后的字节数为%lu", [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);//5.获取str前10个字符组成的字符串NSString *str1 = [str substringToIndex:10];NSLog(@"%@", str1);//6.获取str从第五个字符开始,与后面所有字符所组成的字符串NSString *str2 = [str substringFromIndex:5];NSLog(@"%@", str2);//7.获取str从第五个字符开始,与后面15个字符所组成的字符串NSString *str3 = [str substringWithRange:NSMakeRange(5, 15)];NSLog(@"%@", str3);//8.找到某个字符串出现的位置NSRange pos = [str rangeOfString:@"iOS"];NSLog(@"iOS出现的开始位置是 %ld, 长度为 %ld", pos.location, pos.length);//9.将所有字符串大写str = [str uppercaseString];NSLog(@"%@", str);}return 0;
}

NSRange 变量

在字符串功能倒数第二个方法我们 设置了一个pos变量来寻找 iOS字符出现的位置
NSRange 类的变量,它不是一个类,只是一个已经定义好的鸡腿菇体,包含了
length 和 int值 分别代表了起始位置和长度
创建 NSRange变量需要 NSMakeRange ()函数

可变字符串-NSMutableString

NSString字符串一旦创建,包含在这个对象中的字符串序列是不可改变的,直至它被销毁
NSMutableString 对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString子类因此前面介绍的的NSString 包含的方法 NSMutableString可直接调用

  • 因为NSMutableString是可变的所以我们在进行操作的时候不需要再次赋值给NSMutableString创建的str 变量
  • 这里简答举个例子不过多赘述
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {@autoreleasepool {NSMutableString *str = [NSMutableString stringWithString:@"hello"];[str appendString:@"iOSSSSSS"];//直接追加不赋值NSLog(@"%@“, str");//字符出包含的字符序列是可变的所以本身发生了该拜年因此无需需要重新赋值[str appendFormat:@"适合我学习"];NSLog(@"%@", str);}return 0;
}
2022-05-22 14:55:52.138802+0800 OC-字符串[7570:1175044] (null)“ ,str
2022-05-22 14:55:52.139023+0800 OC-字符串[7570:1175044] helloiOSSSSSS适合我学习
Program ended with exit code: 0

日期与时间(NSDate)

NSDate 对象

NSDate对象代表日期与时间,OC不仅提供了类方法来创建NSDate对象,也提供了大量init开头 的方法来初始化NSDate对象

NSDate 类的各个方法

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {//1.获取代表当前日期的,时间的NSDate------类方法NSDate* date1 = [NSDate date];NSLog(@"现在是北京时间 %@", date1);//2.获取从当前时间开始 一天后的日期=-------实例方法NSDate* date2 = [[NSDate alloc] initWithTimeIntervalSinceNow:3600 * 24];NSLog(@" %@", date2);//3.获取从当前时间开始 3天内的日期-------实例方法NSDate* date3 = [[NSDate alloc] initWithTimeIntervalSinceNow:-3 * 3600 * 24];NSLog(@" %@", date3);
////4. 从1970年1.1 开始 20 年之后的日期--------类方法NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:3600 * 24 * 366 * 20];NSLog(@" %@", date4);//5.获取当前系统的NSLocaleNSLocale* cn = [NSLocale currentLocale];// 获取NSdateNSLog(@"%@", [date1 descriptionWithLocale:cn]);// 获取当前2个日期里较早的时期-------类方法NSDate* earlier = [date1 earlierDate: date2];// 获取当前2个日期里较晚的时期-------类方法NSDate * later = [date1 laterDate:date2];//compare 方法返回NScomparisonResult枚举值
// 枚举包含//NSOrderedAscending,NSOrderedSame, NSOrderedDescending// 分别代表了 调用compare 的日期位于被比较日期的之前 相同 之后switch ([date1 compare:date3]) {case NSOrderedAscending:NSLog(@"date1 位于 date3 之前");break;case NSOrderedSame:NSLog(@"date1  和 date3是同一天");break;;case NSOrderedDescending:NSLog(@"date1 位于 date3 之前");break;;}NSLog(@"date1 与 date3 时间相差%g s", [date1 timeIntervalSinceDate:date3]);NSLog(@"date3 与现在差 %g s", [date3 timeIntervalSinceNow]);}return 0;
}
2022-05-23 17:42:19.620894+0800 OC-日期NSDate[9627:1522836] 现在是北京时间 2022-05-23 09:42:19 +0000
2022-05-23 17:42:19.620990+0800 OC-日期NSDate[9627:1522836]  Tue May 24 17:42:19 2022
2022-05-23 17:42:19.621012+0800 OC-日期NSDate[9627:1522836]  Fri May 20 17:42:19 2022
2022-05-23 17:42:19.621027+0800 OC-日期NSDate[9627:1522836]  Tue Jan 16 08:00:00 1990
2022-05-23 17:42:19.621300+0800 OC-日期NSDate[9627:1522836] 2022年5月23日 星期一 中国标准时间 17:42:19
2022-05-23 17:42:19.621325+0800 OC-日期NSDate[9627:1522836] date1 位于 date3 之前
2022-05-23 17:42:19.621342+0800 OC-日期NSDate[9627:1522836] date1 与 date3 时间相差259200 s
2022-05-23 17:42:19.621357+0800 OC-日期NSDate[9627:1522836] date3 与现在差 -259200 s
Program ended with exit code: 0

NSDate方法代码的解释

  • 创建NSDate 的类方法与实例方法基本相似,类方法以date开头而实例方法以init开头 ,一旦得到NSDate对象 两个NSDate对象之间可以比较大小,计算时间差
  • NSLocale 代表了一个语言 ,国际环境比如中文 就可以通过NSLocale对象来代表,同一个日期在不同的语言下国际环境下 显示出来的字符是不同的。

日期格式器(NSDate Formatter)

NSDate Formatter代表一个日期格式器,它的功能就是完成NSDate 和 NSString之间的转换

NSDate Formatter调用

1.创建一个 NSDateFormatter 对象。
2. 调用 NSDateFormatter 的 setDate Style:、setTimestyle:方法设置格式化日期、时间的风格其中,日期、时间风格支持如下几个枚举值

  • >NSDateFormatterNostyle:不显示日期、时间的风格。
  • > NSDateFormatter Shortstyle:显示“短”的日期、时间风格。
  • > NSDateFormatterMediumStyle:显示“中等”的日期、时间风格。
  • NSDateFormatterLongstyle:显示“长”的日期、时间风格。
  • NSDateFormatterFullStyle:显示“完整”的日期、时间风格
    如果打算使用自己的格式模板,则调用 NSDateFormatter 的 setDate Format:方法设置日期、时间的模板即可。
  • 3 .如果需要将 NSDate 转换为 NSString, 则调用 NSDateFormatter 的 stringFromDate:方法
    执行格式化即可;如果需要将 NSString 转换为 NSDate,则调用 NSDateF ormatter 的
    dateFromString:方法执行格式化即可。

日历(NSCalendar) 与 (日期组件NSDatecomponents)

两个类的作用

  • 为了能分开处理 NSDate 对象所包含的各个字段的数据,Foundation 框架提供了NSCalendar 对象,该对象包含如下两个常用方法。

---------------------------------------------------------- (SDateComponents * ) components:fromDate:从NSDate 中提取年、月、日、时、分秒各时间字段的信息

dateFromComponents: (NSDateComponents*)comps:使用comps 对象包含的年、月、日、时、分、秒各时间字段的信息来创建 NSDate
面两个方法都用到一个 NSDateComponents 对象,该对象专门用于封装年、月、日、时、分、秒各时间字段的信息。该对象非常简单,它只包含了对year、month. date、day、hour、
minute、second、week、weekday 等各字段的 setter 和 getter 方法

从NSDate对象中分开获取各时间字段 的数值的方法如下

  • ①创建 NSCalendar 对象。
  • ② 调用 NSCalendar 的 components: fromDate:方法获取 NSDate 对象中各时间字段的数值
    该方法返回一个 NSDateComponents 对象。
  • ③调用 NSDateComponents 对象的getter 方法来获取各时间字段的数值。

使用各时间字段的数值来初始化 NSDate 对象的步骤如下。

  • ①创建 NSCalendar 对象。
  • ② 创建一个 NSDateComponents 对象,调用该对象的 setter 方法来设置各时间字段的数值.
  • ③调用 NSCalendar 的dateFromComponents: (NSDateComponents*)方法初始化 NSDate 对
    象该方法将会返回一个 NSDate 对象。
演示

[OC-Foundation框架]-<字符串And日期与时间>相关推荐

  1. OC Foundation框架—字符串

    一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableA ...

  2. iOS - OC Foundation 框架

    前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...

  3. [OC Foundation框架 - 9] NSMutableArray

    可变的NSArray,可以随意添加OC对象 1.创建 1 void arrayCreate()2 {3 NSMutableArray *array = [NSMutableArray arrayWit ...

  4. (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...

  5. OC高级foundation框架类以及数据的简单存储

    Objective-c高级复习 第一章 Foundation框架介绍 Foundation.framework是iOS开发的核心框架之 第二章 一.NSNumber OC的数字类型(存储C语言中简单的 ...

  6. 黑马程序员——OC基础05—Foundation框架

    --Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- 一.Foundation框架 1.Foundation就是类.方法.函数.文档等按照一定的逻辑组织起来的集合., ...

  7. 黑马程序员--OC之Foundation框架的使用

    黑马程序员--OC之Foundation框架的使用 ------- <a href="http://www.itheima.com" target="blank&q ...

  8. Foundation框架: 11.NSDate的基本认识和使用

    学到这里, 我们基本上就把Foundation框架里面的东西学的七七八八了, 剩下的就只有UIKit, 也就是我们的UI部分,好了, 废话不多说, 现在我们来看看NSDate是干嘛用的吧. 例子: # ...

  9. Objective-C( Foundation框架 一 常见的结构体)

    常见的结构体 (NSPoint,CGPoint).(NSRange,CGRange).(NSSize,CGSize) 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的 ...

  10. 李洪强iOS开发之Foundation框架—结构体

    Foundation框架-结构体 一.基本知识 Foundation-基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

最新文章

  1. js滚动条下拉一定值_JS逆向 | *APD模拟登录(AES)
  2. 自己实现苹果安装app动画
  3. 危!我用python克隆了女朋友的声音!
  4. CC++中的qsort库函数
  5. 配置jdk1.7的环境变量
  6. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (6) - 流水线前端微熔合/宏熔合
  7. 2——类和对象的关系
  8. android银行卡号扫描二维码,支付宝扫描银行卡号识别SDK
  9. filezilla server mysql_使用FileZilla Server轻松搭建个人FTP服务器
  10. 归档日志路径三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n
  11. Android笔记:使用Glide加载图片刷新时会闪烁
  12. Linux基金会的执行董事Jim Zemlin:开源不能没有“信任”
  13. 数字逻辑电路——反演规则与对偶规则
  14. Unity 2d 机器人的来回巡游
  15. SpringBoot之自动装配原理
  16. 67. Add Binary 二进制加法leetcode
  17. 步步惊心的三文鱼财富
  18. 二、MT8168 KeyPad驱动指南
  19. C语言学习笔记08-2素数判断专题篇
  20. 一本正经需求洽谈老黄历 No.136

热门文章

  1. osg拖曳器源码流程
  2. java searchview_java – Android SearchView空字符串
  3. 既然已经做出了选择,最好还是先假定自己是对的
  4. 如何用Python创建微信机器人?你知道吗
  5. 学透JSON.stringify
  6. 如何制作一个平台游戏
  7. 最强蜗牛击败毁灭机器人_最强蜗牛恶魔形态有哪些_恶魔形态变化介绍_咖绿茵手游站...
  8. css实现六边形图片
  9. 达人评测 i9 12900H和i5 12500h选哪个
  10. zheng的开源项目启动碰到的报错