一些有用的数据类型

范围

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框架相关推荐

  1. OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)

    一.NSNumber OC数组类NSArray,它只能存放 OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的 NS ...

  2. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  3. Hadoop学习笔记—18.Sqoop框架学习

    Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...

  4. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  5. 设计模式学习笔记——原型(Prototype)框架

    设计模式学习笔记--原型(Prototype)框架 @(设计模式)[设计模式, 原型模式, prototype] 设计模式学习笔记原型Prototype框架 基本介绍 原型案例 类图 实现代码 Pro ...

  6. 前端学习笔记:Bootstrap框架入门

    前端学习笔记:Bootstrap框架入门 一.Bootstrap概述 1.基本信息 ​Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS. ...

  7. Hadoop学习笔记—16.Pig框架学习

    Hadoop学习笔记-16.Pig框架学习 一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin, ...

  8. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  9. Colly 学习笔记(二)——爬虫框架,抓取下载数据(上证A股数据下载)

    Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证A股数据下载) Colly 学习笔记(一)--爬虫框架,抓取中金公司行业市盈率数据 Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证 ...

  10. Java学习笔记-Day64 Spring 框架(二)

    Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...

最新文章

  1. 清华大学唐杰教授:人工智能的十年总结
  2. 物联网与应用数字战略
  3. SpringBoot 项目使用 SLF4J+logback 进行日志记录,来增强可维护性
  4. 十以内的加减java编写程序_Java实现随机出题,10道10以内加减法计算代码实例
  5. Qt Creator进阶使用
  6. 读jQuery源码释疑笔记
  7. 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function
  8. maven项目 Java compiler level does not match the version of the installed Java project facet
  9. 指针辨析:悬垂指针、哑指针、野指针、智能指针
  10. websocket没准备好如何解决_惠普打印机打印没反应如何解决 惠普打印机打印没反应解决方法【详解】...
  11. 使用xshell连接腾讯云服务器
  12. 华三防火墙能直连服务器吗,华三防火墙配置求教
  13. 2022哈工大(深圳)计算机854考研经验贴|双非跨考|初试367 复试293
  14. 编码字符串,使得总长度最短
  15. python中用于绘制各种图形的区域称作_Python使用matplotlib填充图形指定区域代码示例...
  16. ElasticSearch入门:ES分词器与自定义分词器
  17. 制作linux的u盘安装盘或live
  18. Sublime text3配置切换大小写转换
  19. 深度补偿模型sparse-to-dense测试
  20. 《热工仪表及自动化》在线平时作业2

热门文章

  1. 23种设计模式(九)对象创建之原型模式
  2. Python进阶(十)多进程multiprocessing和subprocess模块
  3. Tensorflow官方文档学习理解 (一)
  4. Jmeter逻辑控制器操作,附栗子
  5. python mysql connector
  6. [转]Google 发现的十大真理
  7. 【开源GPS追踪】 之 服务器端opengts安装
  8. 【同行说技术】Python开发、调试、爬虫类工具大全
  9. Log_Analysis_using_OSSEC.md
  10. Zebra-VTYSH源码分析和改造