ojective-C学习笔记(7)Foundation框架

一些有用的数据类型

范围

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.png
2018-04-22 21:30:29.089479+0800 test[8798:1458539] Desktop/屏幕快照 2018-04-21 下午3.14.54.png
2018-04-22 21:30:29.089489+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午12.07.45.png
2018-04-22 21:30:29.089497+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午12.08.05.png
2018-04-22 21:30:29.089505+0800 test[8798:1458539] Desktop/pic/屏幕快照 2018-04-21 下午1.54.33.png
2018-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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值