1.NSString
        A.创建的方式:
            stringWithFormat:格式化字符串  ,创建字符串对象在堆区域
            @"jack" :简化字符串创建 ,创建字符串对象在常量区。
        B.特点:恒定性:字符串一旦被创建在内存中,那么它就无法改变了。
               字符串创建的时候会去搜索内存,如果内存中有对应的字符串,就不会创建新的了。
                字符串对象就算没有一个强指针指向,它也不会被回收。
        C.需要掌握的常用方法:
         1).创建格式字符串  stringWithFormat:
         2).使用NSURL读写网络上的资源  stringWithContentsOfURL:
         3).字符串的比较    isEqualToString:
         4).字符串的替换    stringByReplacingOccurrencesOfString:
         5).字符串转换为其他的类型    xxxValue
         6).获得字符串的长度    length
         7).根据符号将字符串分割成一个数组的多个元素,并返回数组结果
         componentsSeparatedByString
 

 
 2.NSMutableString:
 
        A.特点:字符串的内容可以被修改。没有恒定性的。
        B.创建:NSMutableString *str = [NSMutableString stringWithFormat:@"jack"];
        C.常用的方法:
                    appendString:在字符串的后面追加新的字符串
                    appendFormat:在字符串的后面追加格式字符串
    总结:
        大部分情况下,用NSString来保存字符串。
        什么时候应用它:如果要做大批量的字符串拼接,就使用NSMutableString。
 

 
 3.NSArray
        A.创建:[NSArray arrayWithObject:]:创建带有一个元素的OC数组
               [NSArray arrayWithObjects:](记得最后加上nil):创建带有多个元素的OC数组
                                        NSArray *days = [NSArray arrayWithObjects:@"SUN", @"MON",@"TUE",@"WED",@"THU",@"FRI",@"SAT", nil];
                                等价于:  NSArray *days = @[@"SUN","MON","TUE","WED","THU","FRI","SAT"];
              @[@"jack",@"rose"]:创建一个NSArray数组的简要创建方式。
 
        C.常用方法: 
                 
[array count] : 得到这个数组对象的长度。
[arrayobjectAtIndexindex]: 传入数组的索引(index) 得到数据对象。
[arrayWithObjects: ...] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用 nil,以标志结束.
+(id)arrayWithObjects:obj1,obj2,...nil 创建一个新的数组,obj1,obj2......是他的元素对象,以 nil 对象结尾
-(BOOL)containsObject:obj 确定数组中是否包含对象 obj
-(NSUInteger)count 返回数组元素个数
-(NSUInteger)indexOfObject:obj 第一个包含 obj 元素的索引号
-(id)objectAtIndex;i 返回存储在位置 i 的对象
-(void)makeObjectsPerformSelector:(SEL)selector 将 selector 只是的消息发送给数组中的每个元素
-(NSArray*)sortedArrayUsingSelector:(SEL)selector 根据 selector 指示的比较方法对数组进行排序,比如: NSArray * array = @[@"b",@"d",@"a",@"z"];
 
array = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"排序后 array%@",array);
 
   
            3.使用block来遍历集合。
             [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
             //obj:正在遍历的元素
             //idx:正在遍历的元素的下标
             //stop:设置遍历终止的BOOL指针  ,赋值形式  *stop=YES;
             }];
 

4.NSMutableArray
 
(数组实际上是分配长度不可变的地址的,NSMutableArray之所以能变长度,实际上是内部重新分配了一个空间,将原来的数组复制过来,使用新分配的这个,内部把这个过程封装好了而已,所以实际上它也是长度不可变的)
            创建方式:NSMutableArray *arr = [NSMutableArray arrayWithObjects:];
                    NSMutableArray *arr = [NSMutableArray new];
                  //因为此数组是可变得,所以可以创建一个空数组再赋值。
            常用方法:
array 创建一个空数组
+(id)arrayWithCapacity:size 创建一个数组,指定容量为 size
-(id)initWithCapacity:size 初始化一个新分配的数组,指定容量为 size
-(void)addObject:obj 将对象 obj 添加到数组末尾
-(void)insertObject:objatIndex:i 将对象 obj 插入到索引为 i 的位置
-(void)replaceObject:obj atIndex:i 将数组中索引为 i 处的元素用 obj 置换
-(void)removeObject:obj 从数组中删除所有是 obj 的对象
-(void)removeObjectAtIndex:i 从数组中删除索引为 i 的对像
-(void)sortUsingSelector:(SEL)selector 用 selector 只是的比较方法将数组排序
 

 
NSSet
(1)都是存储不同的对象的地址
(2)NSArray 是有序的集合,NSSet 是无序的集合。 (3)集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。
     创建
 
          NSSet * set2 = [[NSSet alloc] initWithObjects: @"one",@"two",@"three",@"four", nil];
 
(1)返回集合中对象的个数
 
[set count];
 
(2)判断集合中是否拥有某个元素 判断集合中是否拥有@”two”:
 
BOOL ret = [set containsObject:@"two"];
 
NSSet * set= [[NSSet alloc] initWithObjects:
 
@"one",@"two",@"three",@"four", nil];
 
(3)判断两个集合是否相等
 
BOOL ret = [set isEqualToSet:set2];
 
(4)判断 set 是否是 set2 的子集合
 
BOOL ret = [set isSubsetOfSet:set2];
 
(5)集合也可以用枚举器来遍历
NSEnumerator * enumerator = [set objectEnumerator]; NSString *str;
while(str =[enumerator nextObject])
{ ..... }
 
(6)数组转换为集合
NSArray * array = [[NSArray alloc] initWithObjects: @"one",@"two",@"three",@"four", nil];
NSSet * set= [[NSSet alloc] initWithArray:array];
 
(7)集合转换为数组
NSArray * array2 = [set allObjects];
 

NSDictionary
 
字典初始化:
 
(1)以一个元素初始化
 
NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];
 
(2)初始化两个元素
 
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: numObj, @"valueKey", numObj2, @"value2",nil];
(3)初始化新字典,新字典包含 otherDic
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];
(4)以文件内容初始化字典
 
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
 
(5)也可创建多维字典 使用快速创建的方式:
 
NSArray *persons = @[
@{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5 分钟突破 iOS 编程", @"5 分钟
 
突破 android 编程"]},
@{@"name" : @"rose", @"qq" : @"767567"}, @{@"name" : @"jim", @"qq" : @"423423"}, @{@"name" : @"jake", @"qq" : @"123123213"} ];
 
常用方法:
(2)通过 key 获取对应的 value 对象 NSObject *valueObj = [dic objectForKey:@"key"];
(3)将字典的 key 转成枚举对象,用于遍历 NSEnumerator *enumerator = [dic keyEnumerator];
(4)获取所有键的集合 NSArray *keys = [dic allKeys];
(5)获取所有值的集合 NSArray *values = [dic allValues];

NSMutableDictionary
 
(1)初始化一个空的可变字典
NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObject: @"v3" forKey:@"key3"];
(2)向字典 2 对象中添加整个字典对象 3
[dic2 addEntriesFromDictionary:dic3];
 
(3)向字典 2 对象中最佳一个新的 key3 和 value3
[dic2 setValue:@"value3" forKey:@"key3"];
 
(4)初始化一个空的可变字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
 
(5)将空字典 1 对象内容设置与字典 2 对象相同
[dic1 setDictionary:dic2];
 
(6)将字典中 key1 对应的值删除
[dic1 removeObjectForKey@"key1"];
NSArray *array = [NSArray arrayWithObjects:@"key1", nil];
(7)根据指定的数组(key)移除字典 1 的内容
[dic2 removeObjectsForKeys:array];
(8)移除字典所有对象
[dic1 removeAllObjects];
 

把int型的10 变成NSNumber对象

NSNumber *num = [NSNumber numberWithInt: 10];
NSNumber *num = @10;
 

NSFileManager

创建一个文件并写入内容,比如在桌面上创建一个文件 lff.txt,并写入内容:My name is LFF:

 
NSString *str = @”My name is LFF”;
 
NSError *error;
 
BOOL isWritSuccess = [str writeToFile:@”/User/LFF/Desktop/lff.txt” atomically:YES encoding:NSUTF8StringEncoding error:&error];
 
if (isWritSuccess) {
 
NSLog(@”创建成功”); }else
 
{
NSLog(@”error %@”,error);
 
}
 
(1)获得目标目录下,第一级目录
NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/Myfile";
NSError * error;
 
NSArray * array =
[fileManager contentsOfDirectoryAtPath:path error:&error];
 
NSLog(@"array %@",array);

(2)逐级获得所有子集的目录

 
NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/other";
NSError * error;
 
NSArray * array =
[fileManager subpathsOfDirectoryAtPath:path error:&error];
 
NSLog(@"array %@",array);
 

(3)删除

NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/newmyfolder"; NSError * error;
BOOL isRemoveSuccess =

[fileManager removeItemAtPath:path error:&error]; if (isRemoveSuccess)

{
NSLog(@"删除成功");

} else {

 
NSLog(@"erro %@",error); }

iOS - Foundation相关的更多相关文章

  1. iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明

    iOS Foundation 框架概述文档:常量.数据类型.框架.函数.公布声明 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业 ...

  2. iOS Foundation 框架基类

    iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...

  3. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  4. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

  5. iOS通讯录相关知识-浅析

    本文来自于:贞娃儿的博客  http://blog.sina.com.cn/zhenwawaer  在开发一些应用中,我们如果需要iPhone设备中的通讯录信息.或者,需要开发通讯录相关的一些功能.那 ...

  6. iOS - 直播相关文章

    直播相关文章 直播RTMP可用于测试的服务器地址 FFmpeg avdumpformat输出的tbn.tbc.tbr.PAR.DAR的含义 FFmpeg 3.0 计算视频时长 HLS Streamin ...

  7. ios 缓存相关信息收集

    链接:http://www.cnblogs.com/pengyingh/category/353093.html 使用NSURLCache让本地数据来代替远程UIWebView请求 摘要: 原文作者: ...

  8. iOS Foundation框架 -2.常用集合类简单总结

    Foundation框架中常用的类有:NSString.NSArray.NSSet.NSDictionary 以及它们对应的子类 NSMutableString.NSMutableArray.NSMu ...

  9. iOS Foundation框架简介 -1.常用结构体的用法和输出

    1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...

随机推荐

  1. Motrix 全平台多功能下载工具[Windows、macOS、Linux]

    Motrix的界面很朴素,使用起来其实也很方便.点击左侧的「+」图标就可以添加下载任务,跟其他的下载工具没什么区别.暂停.恢复.查看.复制,这些功能都不缺.界面也挺好看的,下载速度还会提示在图标的角标 ...

  2. 微信小程序开发工具快捷键

    格式调整 //保存文件 Ctrl+S //代码行缩进 Ctrl+[, Ctrl+] //折叠打开代码块 Ctrl+Shift+[, Ctrl+Shift+] //复制粘贴,如果没有选中任何文字则复制粘 ...

  3. 为什么机器能够学习——PAC Learnability

    机器学习中,我们根据训练集训练一个模型,来对测试数据进行预测.通常我们并不关心模型在训练集上的好坏(即训练误差,in sample error),举个简单例子,我们想要根据前六个月股市行情训练一个模型 ...

  4. python-正则基础

    正则表达式,说的简单些,就是一个匹配的功能,在python中,只要引用 re 模块,就能进行正则匹配操作 一.math匹配 先来看一个简单的例子 import re re.match(pattern, ...

  5. 二十一、IntelliJ IDEA 控制台输出中文乱码问题的解决方法

    首先,找到 IntelliJ IDEA 的安装目录,进入bin目录下,定位到idea.vmoptions文件,如下图所示: 双击打开idea.vmoptions文件,如下图所示: 然后,在其中追加-D ...

  6. 分享一个可下拉刷新的ScrollView

    原理:就是动态改变ScrollView header的margin实现 主要的代码: http://blog.csdn.net/swust_chenpeng/article/details/39289 ...

  7. CSU - 2031 Barareh on Fire (两层bfs)

    传送门: http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2031 Description The Barareh village is on f ...

  8. Node.js笔记07——不使用generator自定义一个项目,深入了解项目结构

    一.初始化项目 新建项目 git init manager 新建view文件夹,建几个静态文件夹 新建app.js 快速初始化项目依赖 npm init -y 安装express npm instal ...

  9. JQuery给一个元素绑定两次点击事件(第二次点击事件)

    由于项目的要求,需要给复选框设置样式,初始样式:,第一次点击的时候显示,第二次点击时候需要改变该样式:. 设计思路: 当点击次数为奇数时显示带有颜色的图片 当点击次数为偶数时显示没有颜色的图片 下边是 ...

  10. Java使用正则解决问题

    分析以下需求,并用代码实现 (根据描述写匹配手机号和邮箱的正则表达式) 1.根据描述写出正则表达式 (1)手机号正则: 第一位为1 第二位为3或4或5或7或8 第三~十一位为0~9的其中一个数字 (2 ...