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
ojective-C学习笔记(7)Foundation框架相关推荐
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
一.NSNumber OC数组类NSArray,它只能存放 OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的 NS ...
- java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)
原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...
- Hadoop学习笔记—18.Sqoop框架学习
Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...
- 设计模式学习笔记——原型(Prototype)框架
设计模式学习笔记--原型(Prototype)框架 @(设计模式)[设计模式, 原型模式, prototype] 设计模式学习笔记原型Prototype框架 基本介绍 原型案例 类图 实现代码 Pro ...
- 前端学习笔记:Bootstrap框架入门
前端学习笔记:Bootstrap框架入门 一.Bootstrap概述 1.基本信息 Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS. ...
- Hadoop学习笔记—16.Pig框架学习
Hadoop学习笔记-16.Pig框架学习 一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin, ...
- Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)
Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...
- Colly 学习笔记(二)——爬虫框架,抓取下载数据(上证A股数据下载)
Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证A股数据下载) Colly 学习笔记(一)--爬虫框架,抓取中金公司行业市盈率数据 Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证 ...
- Java学习笔记-Day64 Spring 框架(二)
Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...
最新文章
- 清华大学唐杰教授:人工智能的十年总结
- 物联网与应用数字战略
- SpringBoot 项目使用 SLF4J+logback 进行日志记录,来增强可维护性
- 十以内的加减java编写程序_Java实现随机出题,10道10以内加减法计算代码实例
- Qt Creator进阶使用
- 读jQuery源码释疑笔记
- 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function
- maven项目 Java compiler level does not match the version of the installed Java project facet
- 指针辨析:悬垂指针、哑指针、野指针、智能指针
- websocket没准备好如何解决_惠普打印机打印没反应如何解决 惠普打印机打印没反应解决方法【详解】...
- 使用xshell连接腾讯云服务器
- 华三防火墙能直连服务器吗,华三防火墙配置求教
- 2022哈工大(深圳)计算机854考研经验贴|双非跨考|初试367 复试293
- 编码字符串,使得总长度最短
- python中用于绘制各种图形的区域称作_Python使用matplotlib填充图形指定区域代码示例...
- ElasticSearch入门:ES分词器与自定义分词器
- 制作linux的u盘安装盘或live
- Sublime text3配置切换大小写转换
- 深度补偿模型sparse-to-dense测试
- 《热工仪表及自动化》在线平时作业2
热门文章
- 23种设计模式(九)对象创建之原型模式
- Python进阶(十)多进程multiprocessing和subprocess模块
- Tensorflow官方文档学习理解 (一)
- Jmeter逻辑控制器操作,附栗子
- python mysql connector
- [转]Google 发现的十大真理
- 【开源GPS追踪】 之 服务器端opengts安装
- 【同行说技术】Python开发、调试、爬虫类工具大全
- Log_Analysis_using_OSSEC.md
- Zebra-VTYSH源码分析和改造