Foundation框架

时间:2023-02-17 20:43:30

1.框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变的更容易

清除缓存,删除这个文件夹下的所有文件/Users/fanyafang/Library/Developer/Xcode/DerivedData

显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool false

2.NSURL与NSString

url统一资源定位符

        //1.将字符串写入文件
NSString *str11=@"ssad";
NSError *err;
[str11 writeToFile:@"/Users/fanyafang/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:&err];
if(err!=nil){
NSLog(@"写入失败!%@",err);
}else{
NSLog(@"写入成功!");
}
//2.读取文件到字符串
NSString *str22=[NSString stringWithContentsOfFile:@"/Users/fanyafang/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];
if(err!=nil){
NSLog(@"读取失败!%@",err);
}else{
NSLog(@"读取成功!");
NSLog(@"%@",str22);
}
//3.写入url,本地路径加file://
NSURL *url=[NSURL URLWithString:@"file:///Users/fanyafang/Desktop/str1.txt"];
if([str11 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&err]){
NSLog(@"写入成功url");
}
//4.读取url
NSString *str33=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",str33);

3.NSString

compare:字符串比较

位枚举,枚举值是2的次方,不使用的时候赋0

[str1 compare:str2 options:(NSCaseInsensitiveSearch,NSNumericSearch)];

     NSString *str1=@"abcd";
NSString *str2=@"abc";
NSComparisonResult s=[str1 compare:str2 options:(NSCaseInsensitiveSearch,NSNumericSearch)]; switch (s) {
case NSOrderedAscending:
NSLog(@"升序!");
break;
case NSOrderedSame:
NSLog(@"一样!");
break;
case NSOrderedDescending:
NSLog(@"降序!");
break;
default:
break;
}

isEqualToString:字符串比较

    if ([str1 isEqualToString:str2]) {
NSLog(@"相等");
}else{
NSLog(@"不相等"); }

hasPrefix:是否包含前缀

hasSuffix:是否包含后缀

 [str1 hasPrefix:@"sss"];//返回BOOL
[str1 hasSuffix:@".jpg"];//返回BOOL

rangeOfString:字符串1中是否包含字符串2,返回结构体类型

NSMarkRange()可以给NSRange类型的结构体变量赋值

NSStringFromRange()把range转换正NSString

        NSRange range=[str1 rangeOfString:str2];
if(range.location!=NSNotFound){
//没有找到
}else{
//找到了
//range.location首次出现的位置
//range.length长度
}

substringFromIndex:从什么位置开始截取字符串

substringToIndex:从开始位置到什么位置截取

substringWithRange:截取一个范围

        NSString *str3=@"ssadsadsadsaqqee";
NSLog(@"%@",[str3 substringFromIndex:]);//从什么位置开始到结束
NSLog(@"%@",[str3 substringToIndex:]);//从开始到什么位置结束 NSRange r1={,};
NSLog(@"%@",[str3 substringWithRange:r1]);//截取一个范围

stringByReplacingOccurrencesOfString:替换

NSString * str4=[str3 stringByReplacingOccurrencesOfString:@"a" withString:@"#"];
NSLog(@"%@",str4);

length获取字符串的长度

characterAtIndex获取某个位置的字符

        NSUInteger u=str3.length;
NSLog(@"%u",u); unichar ch= [str3 characterAtIndex:];
NSLog(@"%c",ch);

intValue:字符串转int

floatValue:字符串转float

doubleValue:字符串转double

        NSString *str5=@"";
NSLog(@"%d",[str5 intValue]);
NSLog(@"%f",[str5 floatValue]);
NSLog(@"%f",[str5 doubleValue]);

stringWithUTF8String用C的字符串创建OC的字符串

UTF8String:OC字符串转成C的字符串

       char *str6="aasdaf";
//用C语言的对象创建OC的字符串
NSString *str7= [NSString stringWithUTF8String:str6]; char *str8=[str7 UTF8String];
printf("%s",str8);

2.NSMutableString

        NSMutableString *strring=[NSMutableString stringWithFormat:@"Jack"];

        //NSMutableString *strring=[NSMutableString string];

        [strring appendFormat:@"itcast"];//追加

        NSLog(@"%@",strring);    

NSMutableString和NSString的区别:

1)NSString是不可变的,里面的文字内容是不能进行修改的

2)NSMutanleString是可变的,里面的文字内容可以随便更改

3)NSMubleString继承自NSStirng,能使用NSString的所有方法

NSMutableString常用方法

stringWithFormat:格式化添加字符串

deleteCharactersInRange:删除字符串的一部分

insertString:在指定位置插入字符串

replaceCharactersInRange:替换字符串的一部分

NSMubleString的string属性可以把字符串覆盖

给可变字符串赋值为不可变字符串,报错

        NSMutableString *strring=[NSMutableString stringWithFormat:@"Jack"];

        //NSMutableString *strring=[NSMutableString string];

        [strring appendFormat:@"itcast"];
[strring appendString:@"ssss"];
NSLog(@"%@",strring);
NSRange range1={,};
[strring deleteCharactersInRange:range1];
[strring insertString:@"fanyf" atIndex:]; NSLog(@"%@",strring);
[strring replaceCharactersInRange:range1 withString:@"rrr"];
NSLog(@"%@",strring);

3.NSArray只能存放任意OC对象,并且是有序的

数组元素不能存nil,改成[NSNull null],最后一个nil表示赋值结束,

        //创建一个空数组
NSArray *arr=[NSArray array];
NSLog(@"%@",arr);
//创建数组,只有一个元素
NSArray *arr2=[NSArray arrayWithObject:@"acc"];
NSLog(@"%@",arr2);
//创建数组,有多个元素
NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@"three",nil];
NSLog(@"%@",arr3);
//调用对象方法,创建数组
NSArray *arr4=[[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil];
NSLog(@"%@",arr4);
//用一个数组可以创建另外的一个数组
NSArray *arr5=[NSArray arrayWithArray:arr3];
NSLog(@"%@",arr5);

count获取数组长度

ObjectAtIndex:获取某个位置的元素

indexofObject:返回某个元素的下标

laseObject:

firstObject:

containObject:是否包含这个元素返回BOOL

        NSLog(@"%ld",arr3.count);//得到数组长度
NSLog(@"%@",[arr5 objectAtIndex:]);//得到位置是1的元素的值
NSUInteger loc= [arr5 indexOfObject:@"two"];//元素的位置
NSLog(@"%ld",loc); BOOL isContain=[arr5 containsObject:@"one"];//数组是否包含
NSLog(@"%@",isContain); NSArray *arr11=@[@"",@"",@];//数组的简化写法
NSLog(@"%@",arr11[]);//数组的简化访问

数组的遍历(一般方法和快速枚举法):

        //数组的遍历1
for (NSString *str in arr11) {
NSLog(@"数组遍历:%@",str);
}
//数组的遍历2,用block遍历
[arr5 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//if(idx==2){
// *stop=YES;
//}else{
NSLog(@"idx=%ld,obj=%@",idx,obj);
//} }];

读写文件,xml格式或者plist格式

        BOOL isWrite= [arr11 writeToFile:@"/Users/fanyafang/Desktop/arr.txt" atomically:YES];
if(isWrite){
NSLog(@"写入成功!");
} NSArray *readArr= [NSArray arrayWithContentsOfFile:@"/Users/fanyafang/Desktop/arr.txt"];
NSLog(@"readArr=%@",readArr);

数组中的字符串用"-"连接起来

字符串分割成一个数组

        //数组连接
NSString *str=[arr5 componentsJoinedByString:@"-"];
NSLog(@"%@",str);
//字符串分隔
str=@"400-800-12580";
NSArray *arr6=[str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr6);

4.NSMutableArray

        NSMutableArray *marr=[NSMutableArray arrayWithObject:@""];
NSMutableArray *marr2=[NSMutableArray arrayWithObjects:@"",@"",@"",nil];
NSMutableArray *marr3=[NSMutableArray arrayWithCapacity:];
//添加元素
[marr2 addObject:@"fengjie"];
NSLog(@"%@",marr2);
[marr2 insertObject:@"sdd" atIndex:];
//删除元素
NSLog(@"%@",marr2);
[marr2 removeObject:@"sdd"];
NSLog(@"%@",marr2);
[marr2 removeObjectAtIndex:];
NSLog(@"%@",marr2);
//删除元素
[marr2 replaceObjectAtIndex: withObject:@""];
NSLog(@"%@",marr2);
//是否包含元素
NSLog(@"%@",[marr2 containsObject:@""]);
//交换元素
[marr2 exchangeObjectAtIndex: withObjectAtIndex:];
NSLog(@"%@",marr2);

5.NSDictionary

Foundation框架Foundation框架Foundation框架

enumerateKeysAndObjectsUsingBlock用代码块遍历

简写形式:

Foundation框架

6.NSMutableDictionary

Foundation框架

7.NSFileManager

//NSFileManager用于判断
NSString *path=@"/Users/fanyafang/Desktop/str.txt";
NSString *path2=@"/Users/fanyafang/Desktop"; NSFileManager *fm=[NSFileManager defaultManager];
//1)判断文件是否存在
BOOL isyes=[fm fileExistsAtPath:path];
//2)判断是否是目录
if(isyes){
BOOL isDir;
[fm fileExistsAtPath:path2 isDirectory:&isDir];
if(isDir){
NSLog(@"是一个目录");
}
}
isyes=[fm isReadableFileAtPath:path];//3)是否可读
isyes=[fm isWritableFileAtPath:path];//4)是否可写
isyes=[fm isDeletableFileAtPath:path];//5)是否可删除 //1)获取文件信息
NSDictionary *dict=[fm attributesOfItemAtPath:path error:nil];
NSLog(@"%@",dict);
NSLog(@"%@",[dict objectForKey:@"NSFileCreationDate"]);
//2)获取指定目录下的文件及子目录
NSArray * arr=[fm subpathsAtPath:path2];//递归方式
arr=[fm subpathsOfDirectoryAtPath:path2 error:nil];//不使用递归方式
//3)获取知道目录下得子目录(不获取后代路径)
arr=[fm contentsOfDirectoryAtPath:path2 error:nil];
NSLog(@"%@",arr); //1)创建路径
NSString *dirPath=@"/Users/fanyafang/Desktop/aaa";
BOOL isYes=[fm createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:nil]; //2)创建文件
NSString *str=@"每当我错过一个女孩。。。。";
NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
isyes=[fm createFileAtPath:path contents:data attributes:nil];
//3)复制
NSString *targetPath=@"/Users/fanyafang/Desktop/aaa/str.txt";
[fm copyItemAtPath:path toPath:targetPath error:nil]; //4)移动文件
NSString *targetPath2=@"/Users/fanyafang/Desktop/aaa/bbb/str.txt";
[fm moveItemAtPath:path toPath:targetPath2 error:nil];
//5)删除文件
[fm removeItemAtPath:targetPath error:nil];

8.ios沙盒(sandbox)机制及获取沙盒路径

文件系统

1)获取沙盒跟目录

NSHomeDirectory();

2)获取doucuments目录

NSSearchPathForDirectoriesInDomains();

9.常见结构体

 //CGPoint和NSPoint
CGPoint p;
p.x=;
p.y=; CGPoint pp={,}; NSPoint p1;
p1.x=;
p1.y=; NSPoint p2={,}; CGPoint p3=CGPointMake(, );
NSPoint p4=NSMakePoint(, ); //CGSize和NSSize
CGSize s1={,};
CGSize s2;
s2.width=;
s2.height=; NSSize s3={,};
NSSize s4;
s4.width=;
s4.height=;
CGSize s5=CGSizeMake(, );
NSSize s6=NSMakeSize(, ); //CGRect和NSRect
CGRect rr={{,},{,}}; CGRect r1=CGRectMake(, , , );
NSRect r2=NSMakeRect(, , , ); NSLog(@"%@",NSStringFromRect(r2));

10.NSNumber

NSNumber *n=[NSNumber numberWithInt:];
NSNumber *n2=[NSNumber numberWithFloat:10.1f];
NSNumber *n3=[NSNumber numberWithDouble:12.1]; NSArray *arr=[NSArray arrayWithObjects:n,n2,n3, nil];
NSLog(@"%@",arr);
int a=[n intValue];
NSLog(@"%d",a);
float f=[arr[] floatValue]; //简写@18 @(变量名)

11.集合对象的内存管理

1)只要把对象放到数组中,对象的引用计数+1

2)数组在销毁的适合,对对象发送一次release消息

12.copy

类必须遵守NSCopying协议,才能使用copy方法复制对象

使用copy产生的是不可变的副本,是浅复制,因为没有产生新的对象

使用mutableCopy产生的是可变的副本,是深复制,分配一块新的内存空间

@property中的copy关键字

适用于NSString/Block

13.为自定义类实现copy方法

遵守NSCopying协议

实现默认的方法,返回新对象

自定义对象都是深拷贝

14.单例模式

Foundation框架的更多相关文章

  1. Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver

    ========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...

  2. iOS开发系列—Objective-C之Foundation框架

    概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...

  3. Foundation框架-NSString和NSMutableString

    可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式  2.3 从文件中 ...

  4. Core Foundation框架

    转载自:http://blog.csdn.net/weiwangchao_/article/details/7744972 Core Foundation框架 (CoreFoundation.fram ...

  5. 08OC之Foundation框架

    1.Foundation框架简述 在前面,我们创建一个类的时候,都会选择Cocoa Class.到底Cocoa Class是什么东西呢? Cocoa 不是一门编程语言,因为它可以运行在多种编程语言上, ...

  6. Objective-C语言Foundation框架

    Mac OS X开发会使用Cocoa框架,它是一种支持应用程序提供丰富用户体验的框架,它实际上由:Foundation和Application Kit(AppKit)框架组成.iOS开发,会使用Coc ...

  7. Objective-C( Foundation框架 一 常见的结构体)

    常见的结构体 (NSPoint,CGPoint).(NSRange,CGRange).(NSSize,CGSize) 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的 ...

  8. foundation框架—结构体

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

  9. Foundation框架—字符串

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

  10. Foundation框架—集合

    Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向 ...

随机推荐

  1. js基础练习三之数码时钟

    这章节有两个实例,1,定时器的使用; 2,数码时钟; 用到的js知识:定时器,Date对象. >>>>>定时器 开启定时器: setInterval 间隔型 setTim ...

  2. poj 3101 Astronomy

    2个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个 分数的最小公倍数即可! 公式: 分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数 由于涉及到大数 ...

  3. if条件

    -e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L filen ...

  4. /etc/fstab 文件解释

    /etc/fstab 文件解释 文件fstab包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件. 这个文件的全路径是/etc/fstab ...

  5. JUC笔记

      3个售票员,卖30张票   package com.javase.thread;   import java.util.concurrent.locks.Lock; import java.uti ...

  6. .NET Core 如何使用Session

    第一步先注册session: 在Startup.cs文件中的ConfigureServices方法中添加: services.AddSession(); 在Startup.cs文件中的Configur ...

  7. bootstrap4 Reboot details summary 美化(点选禁止选中文本,单行隐藏角标,多行后移)

    bootstrap4 Reboot details summary 优化这块,主要是为了去掉details summary的角标~ 所以优化写了一下. 原始HTML <details> & ...

  8. SpringBoot设置文件上传大小限制--默认为1M

    SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeL ...

  9. 使用SQL Developer导入文件时出现的一个奇怪的问题

    SQL Developer 的版本是 17.3.1.279 当我导入文件的时候,在Data Preview 的阶段,发现无论选择还是取消选择 Header,文件中的第一行总会被当作字段名. 后来在Or ...

  10. 如何在 OSX 中使用多个JDK版本

    升级macbook小白的硬盘成SSD后,重新安装了系统和JDK8,但是启动eclipse还是报告需要安装JDK6,于是也按照提示安装了Apple JDK6,这导致系统中有两个JDK,一个是Oracle ...