博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ojective-C学习笔记(7)Foundation框架
阅读量:5104 次
发布时间:2019-06-13

本文共 3156 字,大约阅读时间需要 10 分钟。

一些有用的数据类型

范围

NSRange range1;range1.location = 10;range1.length = 20;        NSRange range2 = {10, 20};NSRange range3 = NSMakeRange(10, 20);

几何数据类型

struct CGPoint {    CGFloat x;    CGFloat y;};struct CGSize {    CGFloat width;    CGFloat height;};struct CGRect {    CGPoint origin;    CGSize size;};CGPoint point = CGPointMake(0, 0);CGSize size = CGSizeMake(10, 10);CGRect rect = CGRectMake(0, 0, 10, 10);

这些数据类型都是C的结构体,所有的OC对象都是动态分配的,它会消耗大量的时间。

字符串

使用类方法创建字符串

NSString *str = [NSString stringWithFormat:@"My name is %@, I'm %d years old.", @"LiLei", 18];

关于大小

使用实例方法length,它返回字符串中字符的个数。

NSUInteger length = [str length];

字符串比较

使用下面的方法比较字符串是否相等。

- (BOOL)isEqualToString:(NSString *)aString;

比较两个字符串可以用下面的方法

- (NSComparisonResult)compare:(NSString *)string;

NSComparisonResult是一个枚举类型。

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};

字符串是否包含别的字符创

判断字符串的前缀和后缀。

- (BOOL)hasPrefix:(NSString *)str;- (BOOL)hasSuffix:(NSString *)str;

判断字符串内是否包含其他字符串。

- (NSRange)rangeOfString:(NSString *)searchString;

集合家族

NSArray

OC数组有两个限制,它只能存储OC的对象,同时不能再数组中存储nil。

下面通过代码来学习遍历数组的方法:

NSArray *arr = @[@"one", @"two", @"three"];//1.枚举NSEnumerator *enumerator = [arr objectEnumerator];id obj;while (obj = [enumerator nextObject]) {    NSLog(@"%@", obj);}//2.快速枚举for (id obj in arr){    NSLog(@"%@", obj);}//3.使用代码块[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL* stop) {    NSLog(@"%@", obj);}];

字典

NSDictionary *dic = @{@"name" : @"LiLei", @"age" : @18};NSMutableDictionary *dics = [NSMutableDictionary dictionaryWithDictionary:dic];[dics setValue:@"123" forKey:@"phone"];NSLog(@"%@", dics);

不要尝试创建,字符串,数组和字典的子类,它们实际上是以类簇的方式实现的。

NSNumber 类

上面提到了OC数组中只能存储OC的对象,不能存储基本类型的数据,OC提供了NSNumber类来封装基本数据类型。

通常将一个基本类型的数据封装成对象的过程被称为装箱,反之则称为开箱。OC并不支持自动装箱功能。

NSValue 类

NSValue是NSNumber的父类,它可以封装任意值,可以用它将结构体放入数组或者字典中。

NSRect rect = NSMakeRect(0, 0, 120, 120);NSValue *value = [NSValue valueWithRect:rect];NSArray *array = @[value];NSRect rect2 = [value rectValue];

NSNull

前面提到OC数组中不能存放nil,但有时候确实需要存储一个“什么都没有”的值,这时候可以使用NSNull。

它是一个十分简单的类,只有一个方法:

+ (NSNull *)null;

[NSNull null]总是返回一样的数值,所以可以使用“==”将该值与其他值进行比较。

示例程序:查找文件

NSFileManager *manager = [NSFileManager defaultManager];NSString *home = [@"~" stringByExpandingTildeInPath];NSMutableArray *files = [NSMutableArray arrayWithCapacity:100];for(NSString *filaname in [manager enumeratorAtPath:home]){    if([[filaname pathExtension] isEqualToString:@"png"]){        [files addObject:filaname];    }}for (NSString *filename in files){    NSLog(@"%@", filename);}

结果如下:

2018-04-22 21:30:29.089471+0800 test[8798:1458539] Desktop/屏幕快照 2018-04-21 下午3.10.56.png2018-04-22 21:30:29.089479+0800 test[8798:1458539] Desktop/屏幕快照 2018-04-21 下午3.14.54.png2018-04-22 21:30:29.089489+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午12.07.45.png2018-04-22 21:30:29.089497+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午12.08.05.png2018-04-22 21:30:29.089505+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午1.54.33.png2018-04-22 21:30:29.089512+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午12.08.31.png

转载于:https://www.cnblogs.com/ccyag/p/8906516.html

你可能感兴趣的文章
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
算法为啥子那么难【转】
查看>>
对数器的使用
查看>>
OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自己主动停止...
查看>>
Redis用户添加、分页、登录、注册、加关注案例
查看>>
练习2
查看>>
【ASP.NET】演绎GridView基本操作事件
查看>>
ubuntu无法解析主机错误与解决的方法
查看>>
尚学堂Java面试题整理
查看>>
08-【jsp重点】
查看>>
小记:xml画一个爱心。
查看>>
MySQL表的四种分区类型
查看>>
7.26
查看>>
dll--二进制层面的复用
查看>>
linux 压缩/解压缩/打包命令
查看>>
守护进程
查看>>
CLR 关于强命名程序集 .
查看>>