一、Foundation—基础框架
框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。

1.范围 NSRange

//NSRange的定义
typedef struct _NSRange {NSUIntegerlocation;NSUIntegerlength;
} NSRange;//创建一个NSRange
NSMakeRange(NSUInteger loc, NSUInteger len)//判断一个点是否在里面
BOOL NSLocationInRange(NSUInteger loc, NSRange range)//判断是否相等
BOOL NSEqualRanges(NSRange range1, NSRange range2)

举例说明NSRange的用法

#import <Foundation/Foundation.h>int main()
{//定义一个rangeNSRange range = NSMakeRange(0, 3);//输出range的location和lengthNSLog(@"%ld--%ld",range.location,range.length);//查找某个字符串再另一个字符串的范围NSString *str = @"just a demo";//查找NSRange range2 = [str rangeOfString:@"a"];//输出NSLog(@"%ld,%ld",range2.location,range2.length);return 0;
}

2.点 NSPoint和CGPoint

<span style="font-size:18px;">struct CGPoint {CGFloat x;CGFloat y;
};typedef struct CGPoint CGPoint;</span>

举例说明使用

<span style="font-weight: normal;"><span style="font-size:18px;"> <span style="font-weight: normal;">//NSPoint和CGPoint的创建类似NSPoint point =NSMakePoint(10, 10);CGPoint point2 = CGPointMake(12, 12);//注意 x 和 y 是 double 类型NSLog(@"%f,%f",point.x,point.y);NSLog(@"%f,%f",point2.x,point2.y);
//判断两点是否相等BOOL b = CGPointEqualToPoint(point, point2);NSLog(@"%d",b);</span></span></span>

3.尺寸 NSSize和CGSize

<span style="font-size:18px;">struct CGSize {CGFloat width;CGFloat height;
};</span>

举例说明使用

<span style="font-size:18px;">   //创建 sizeNSSize size =NSMakeSize(10, 12);CGSize size2 = CGSizeMake(11, 10);//打印 sizeNSLog(@"%@",NSStringFromSize(size2));NSLog(@"%f,%f",size.width,size.height);</span>

4.矩形 NSRect和CGRect

<span style="font-size:18px;">struct CGRect {CGPoint origin;CGSize size;
};typedef struct CGRect CGRect;</span>

常用方法举例

    //创建 CGRect 和 NSRectNSRect rect = NSMakeRect(0, 0, 10, 10);CGRect rect2 = CGRectMake(0, 0, 5, 5);//判断两个 rect 是否相同BOOL b = CGRectEqualToRect(rect, rect2);//判断一个 rect 是否包含另一个 rectBOOL b2 = CGRectContainsRect(rect, rect2);//判断点是否在 rect 内BOOL b3 = CGRectContainsPoint(rect2, NSMakePoint(5, 5));//打印判断结果NSLog(@"%d,%d,%d",b,b2,b3);

二、字符串 NSString和NSMutableString

1.NSString

<span style="font-size:18px;">//快速创建NSString *str = @"this is just a demo";//格式化创建int a=2;NSString *str2 = [[NSString alloc]initWithFormat:@"this is a demo%d",a ];NSString *str3= [[NSString alloc]initWithUTF8String:"just a demo"];//从文件中加载NSString *str4 = [[NSString alloc]initWithContentsOfFile:@"/Users/shmily/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];//从 url 中加载NSURL *url = [NSURL URLWithString:@"file:///Users/shmily/Desktop/1.txt"];NSString *str5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];NSLog(@"%@\n%@\n%@\n%@\n%@",str,str2,str3,str4,str5);</span><span style="font-size: 24px;">
</span>

2.NSMutableString

NSMutableStirng继承自NSString,所以NSString有的方法,NSMutableString都有,唯一不同的是,NSMutableString是可变字符串,当初始化完成后可以继续修改改字符串的内容,NSString是不可变字符串,一旦初始化完成,就不能再修改其内部的值.

使用举例

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];// 拼接内容到s1的后面[s1 appendString:@" 11 12"];// 获取is的范围NSRange range = [s1 rangeOfString:@"is"];[s1 deleteCharactersInRange:range];NSString *s2 = [NSString stringWithFormat:@"age is 10"];//添加字符串到指定已有字符串NSString *s3 = [s2 stringByAppendingString:@" 11 12"];     NSLog(@"s1=%@, s2=%@", s1, s2);

三、NSArray 和NSMutableArray

1.NSArray

不可变对象数组的使用

//NSArray的创建NSArray *array1 = [NSArray arrayWithObject:@"jack"];// nil是数组元素结束的标记NSArray *array2 = [NSArray arrayWithObjects:@"jack", @"rose", nil];      //快速创建一个NSArray对象NSArray *array4 = @[@"jack", @"rose", @"4324324"];//NSArray的元素个数NSLog(@"%ld", array3.count);//NSArray中元素的访问NSLog(@"%@", [array3 objectAtIndex:1]);//快速访问NSLog(@"%@", array3[0]);
}

2.NSMutableArray

可变对象数组的使用

<span style="font-size: 18px;">   </span><span style="font-size:14px;"> // @[] 只创建不可变数组NSArray// 常见错误写法NSMutableArray *array = @[@"jack", @"rose"];[array addObject:@"jim"];//因为快速创建的NSArrray是不可变的// 可变数组的基本使用NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];// 添加元素[array addObject:[[Person alloc] init]];  [array addObject:@"jack"];// 删除元素[array removeAllObjects];// 删除指定的对象[array removeObject:@"jack"];[array removeObjectAtIndex:0];// 错误写法// [array addObject:nil]; //nil是NSArray的结束标志</span>

四、NSDictionary和NSMutableDictionary
1.NSDictionary

//字典的定义
//NSDictionary定义一个键值对
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
//NSDictionary定义多个键值对
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"jack", @"name",@"北京", @"address",@"32423434", @"qq", nil];
//快速定义字典(只能用于不可变字典)
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};//字典的键值对获取
id obj = dict[@"name"];

2.NSMutableDictionary

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"北京" forKey:@"address"];// 移除键值对
[dict removeObjectForKey:(id)];// 字典不允许有相同的key,但允许有相同的value(Object)// 字典的无序的NSDictionary *dict = @{@"address" : @"北京",@"name" : @"jack",@"name2" : @"jack",@"name3" : @"jack",@"qq" : @"7657567765"};//打印所有的字典的键值对
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {NSLog(@"%@ - %@", key, obj);// *stop = YES;}];

五.NSNumber
1.将各种基本数据类型包装成NSNumber对象.

// 将age变量包装成NSNumber对象int age = 100;@(age);//[NSNumber numberWithInt:age];//将基本数据类型包装成NSNumber对象
NSNumber *num = [NSNumber numberWithInt:10];
NSNumber *n = [NSNumber numberWithDouble:10.5];

2.将NSNumber对象转化成基本数据类型

//将NSNumber对象转为基本数据类型
//转为int
int a = [number intValue];//转为double
double d = [number doubleValue];

3.将基本数据类型快速包装成NSNumber对象

// 将各种基本数据类型包装成NSNumber对象@10.5;@YES;@'A'; // NSNumber对象//注意@'A'和@"A"的区别@"A"; // NSString对象

六、NSDate
1.创建一个NSDate对象

// 创建一个时间对象NSDate *date = [NSDate date];// 打印出的时候是0时区的时间(北京-东8区)NSLog(@"%@", date);NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];// 从1970开始走过的秒数NSTimeInterval seconds = [date2 timeIntervalSince1970];

2.日期格式化

//日期格式化
NSDate *date = [NSDate date];   // 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];// y 年  M 月  d 日
// m 分 s 秒  H (24)时  h(12)时
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";//将date转化为formatter对应格式的字符串
NSString *str = [formatter stringFromDate:date];

3.将制定格式的字符串转为date对象

// 09/10/2011
NSString *time = @"2011/09/10 18:56";
//实现一个 NSDateFormatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//设置日期格式
formatter.dateFormat = @"yyyy/MM/dd HH:mm";//根据设置的日期格式将字符串转为日期
NSDate *date = [formatter dateFromString:time];

七、NSValue

之前说过的NSNumber实际上是NSValue的一种特殊形式.
NSValue可以将基本数据类型包装成OC对象.比如:

CGPoint p = CGPointMake(10, 10);
// 将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];我们可以看出,实际上使用NSValue转化的方法的命名格式为
NSValue *value = [NSValue valueWith + 对应的数据类型(int,point,rect等)];将NSValue转化为基本数据类型的方式和NSNumber相似,可以总结为
基本数据类型 变量名 = [NSValue对象 基本数据类型 + Value];

学习心得:
通过本章知识点的学习和理解,foundation框架中有很多有用的、面向数据的简单类和数据类型,提供了许多集合类,一些对象都是不可变的,这个框架提供了这些类的可变版本,可以随意更改他们的内容,是的编程更加便捷,高效。

iOS开发-OC-Foundation框架相关推荐

  1. 黑马程序员——零基础学习iOS开发——13 Foundation框架

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  2. IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例

    IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例 1.01_FileManager学习 // // main.m // ...

  3. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  4. iOS 开发之照片框架详解

    一. 概要 在 iOS 设备中,照片和视频是相当重要的一部分.最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法.在 iOS 8 出现之前,开发者只能使用 A ...

  5. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  6. iOS - OC Foundation 框架

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

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

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

  8. iOS开发库和框架大全

    音频 AudioBus:下一代 App 到 App 的实时音频路由.官网 AudioKit:一个强大的音频合成,处理和分析的工具集.官网 EZAudio:一个基于 Core Audio 的 iOS/O ...

  9. IOS开发学习---Fundation框架和UIKit框架

    框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS 提供了许多可在应用程序开发中使用的框架.要使 ...

  10. OC Foundation框架—字符串

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

最新文章

  1. angular 拦截器
  2. ESFramewor使用技巧(2)-- 在插件中使用NHibernate
  3. Cannot resolve method ‘call(java.lang.String, org.apache.flink.table.api.ApiExpression)‘
  4. 戴尔电脑怎么安装一级计算机,手把手教你戴尔笔记本电脑重装系统教程
  5. 用VS2013如何编写C语言
  6. Linux io运行情况,Linux IO调度层分析
  7. Django中的form如何设置field的html属性呢?
  8. 力扣-409 最长回文串
  9. 阿里首席架构师分享的Java工程师职业规划
  10. 简单有限元分析技术(详细步骤讲解)
  11. Hibernate框架介绍以及入门 【一】Hibernate 快速入门 框架的概述 什么是 Hibernate Hibernate 持久层的ORM框架 下载Hibernate 官网 编写测试代码
  12. 影响力最大化 IMRank 我心中的最优算法
  13. 微信小程序-图片放大与缩小
  14. 符号_特殊符号大全狐狸符号加字和复制
  15. 一个Android项目被360报毒的解决方案
  16. STC12C5A60S2 双串口
  17. 如何在Mac上安全的下载BT
  18. 如何同步微信信息php,微信小程序中实现同步请求的方法
  19. 案例:基于RMF的用户价值度分析
  20. 细说——sqlmap

热门文章

  1. 【UE 从零开始制作坦克】6-坦克开炮
  2. 模拟带通滤波器设计的大体思路及相关知识小结(基于滤波器设计手册)
  3. URAL 1750 Pakhom and the Gully 计算几何+floyd
  4. Gain Block是什么?
  5. [创业-17]:财务报表之综述
  6. python 一等公民_Python中的一等公民
  7. css随机背景,随机背景
  8. SpringLink期刊提交Latex源文件
  9. webgl与opengl的区别和联系
  10. 胖瘦如何衡量?由BMI指数来判断