您的位置:首页 > 职场人生

黑马程序员——OC基础05—Foundation框架

2015-11-15 22:36 405 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-一、Foundation框架1.Foundation就是类、方法、函数、文档等按照一定的逻辑组织起来的集合。,它是mac和iOS的基础。2.Foundation中常用的类有:
NSString(字符串);
NSArray (数组);
NSNumber(数字);
NSDate(日期);
NSData(数据);
NSDictionary(字典);

和他们分别对应的子类 NSMutableString、NSMutableArray、NSMutableDictionary。
父类和子类的区别:父类不可变,内容不可修改,而子类的空间是可变的,内容可以修改,而子类可以继承父类所有的方法。1)NSString 字符串A: 字符串比较大小 compare
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1=@"abc";
NSString*str2=@"aqwerrtaberrtyhjkijk";
NSComparisonResult result =[str1 compare:str2];
switch (result) {
case -1:  //NSOrderedAscending
NSLog(@"str1<str2") ;
break;
case 1:   //NSOrderedDescending
NSLog(@"str1>str2") ;
break;
case 0:    //NSOrderedSame
NSLog(@"str1==str2") ;
break;

default:
break;
}
判断字符串是否真的相等,isEqualToStringB. NSString前后缀 prefix suffix
if [URL has prefix :@"http://"]{
NSLog(@"这是一个网址");
}
C. 字符串的查找让字符串在元字符串中查找首次出现的位置。
NSString *str1=@"abc";
NSString*str2=@"aqwerrtabcerrtyhjkijk";

NSRange range=[str2 rangeOfString:str1];
//结构体别名 结构体变量
// 《A rangeOfString B》 代表在A中找到B首次出现的位置

if (range.location!=NSNotFound) {
NSLog(@"%lu,%lu",range.location,range.length);
}else
NSLog(@"%@未能在%@中找到",str1,str2);
D. NSRange的使用
NSRange r1 = NSMakeRange(2, 4);  //第一个参数为.location 第二个参数为.length

NSString *str = @"学习OC";

NSRange range = [str rangeOfString:@"学习"];  //查找某个字符串在str字符串中的位置和长度

NSLog(@"loc = %ld, len = %ld",range.location, range.length);

给变量初始化时,通常会采用下面方法:
NSRange range1=NSMakeRange(5,3);
NSRange range2={.location=2,.length=4};
//输出查看range的值
NSRange r4=NSMakeRange(8,3);

NSLog(@"%@",NSStringFromRange(r4));
E 字符串的截取
NSString *str5=@"asdf我爱你塞北的雪adsd";
str5=[str5 substringFromIndex:5];
//从序号5的位置一直到结束,包含5的位置
str5=[str5 substringToIndex:5];
//从开始位置到5的位置结束,不含5的位置

NSRange r6={3,4};
NSString* Str6=[str5 substringWithRange:r6];
//从序号为3的位置,输出字符长度为4的字符串,即“f我爱你”
F.字符串的替换
NSString *str=@"adsafd dadfa fdads daf";
str=[str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];//用*代替 a
str=[str stringByReplacingOccurrencesOfString:@" " withString:@""];//吸收空格
NSLog(@"==%@",str);
//目的是将字符串中的汉字输出。
NSString *str5=@"asdf我爱你塞北的雪jasdkh23";

NSUInteger loc=[str5 rangeOfString:@"f"].location+1;
NSUInteger len=[str5 rangeOfString:@"j"].location-loc;
NSRange r6={loc,len};

NSString* newString=[str5 substringWithRange:r6];

//取出指定位置的字符
unichar c = [str3 characterAtIndex:2];
NSLog(@"%c",c);
G.OC中字符串与C中的字符串相互转换
//c语言字符串转化为OC字符串
NSString *s3 = [NSString stringWithUTF8tring:"name"];

//OC字符串转化为C语言字符串
const charchar *cs = [s3 UTF8String];

H.字符串的拼接
//请输入十次itcast并以空格格开;NSMutableString *str6 = [ NSMutableString string];for (int i=0; i<10; i++) {[str6 appendString:@” itcast”];
2)NSMutableStringNSString的子类,NSMutableString定义的变量在堆区,可读可写。
NSString *str=@“Jack”;str=@“Rose”;此时的 str的指向发生了变化,空间地址不一样
A创建一个空字符串NSMutableSting *str=[NSMutableString string];B.初始化NSMutableString *str1=[NSMutableString stringWithFormat:@“Jack”];
3)NSArray 和NSMutableArrayA 与int *p[]的区别 ,它只能存放一种数据类型,不能方便动态的添加和删除元素,而NSArray可以存放任意OC对象,有顺序,不能存放C对象。一旦初始化后也是不能改变的,B 空数组的创建
NSArray *arr =[NSArray array]NSArray *arr4= [[NSArray allocc]initWithObject:@"Tom",nil];//调用对象方法NSArray *arr2= [NSArray arrayWithObjects:@"Lose",@"Jack", nil];//一个元素 的创建NSArray *arr4=[NSArray arrayWithArray *arr2];//用一个已经存在的数组创建NSArray *arr3=[NSArrayarrayWithObject:@"Peter",nill];//多个元素的创建NSArray*arr1=@[@"1",@"2",@"3",@"4"];//快速创建变量并且进行初始化//注意:数组元素不能为nil,否则遇见nil则停止输出,如果真的想用,用[NSNull,nil]
C.
NSLog(@"%@",arr.count)//获得数组的个数NSString *str1=[arr objectAtIndex:2];//将序号为2的元素赋值给字符串NSUInteger loc = [arr indexOfObject:@"Peter"];  取得字符串在数组中的地址NSString *str=arr[3];        //重新指向数组BOOL isYES=[arr containsObject:"Peter"];//是否含字符串NSLog(@"====%@,%@,,,,,%ld",arr,str1,loc)
D. 快速访问数组元素NSString str= arr[i];E. 遍历数组元素
        NSArray *arr=@[@"ERIC",@"Peter",@"hello",@5];for (int i=0; i<arr.count; i++) {NSLog(@"%@",arr[i]);} //普通下表访问for (NSString *str in arr) {NSLog(@"%@",str);//for 循环增强型[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop){if (idx==4) {*stop=YES;//作用相当于break}else    NSLog(@"idx=%ld,obj=%@",idx,obj);}];//快速枚举法F.NSArray  写入文件 及读取文件BOOL isYES=[arr3 writeToFile:@"/Users/mac/Desktop/Jian.plist" atomically:YES];if (isYES){NSLog(@“写入正确”);}NSArray *readArr=[NSArray arrayWithContentsOfFile:@"/Users/mac/Desktop/Jian.xml"];NSLog(@"%@",readArr);
G. 分割字符串
NSString *str0=@"400-800-30298#400-300-12345";NSArray *arr11=[str0 componentsSeparatedByString:@"#"];NSArray *arr0= [str12 componentsSeparatedByString:@"-"];NSLog(@"%@---%@---%@",arr11[1],[arr11 first Object],[arr11 last Object];NSArray arr=@[@"jack",@"rose",@"lily"];NSString*str= [arr componentsJoinedByString:@"-"];//把数组元素用-连接起来
H.
 NSMutableArray//1.创建数组并初始化NSMutableArray *arr= [NSMutableArray arrayWithObjects:@"hello",@2,@5,@"world", nil];//2.增加元素//1)按照数组内容[arr addObject:@"Peter"];NSLog(@"%@",arr);//2)按照下标[arr insertObject:@"Eric" atIndex:3];NSLog(@"%@",arr);//3.删除元素//1)按照数组内容[arr removeObject:@"hello"];NSLog(@"------>%@",arr);//2)按照下标[arr removeObjectAtIndex:4];NSLog(@"_____%@",arr);//3)全部删除[arr removeAllObjects];NSLog(@"%@",arr);//4.修改元素[arr replaceObjectAtIndex:3 withObject:@"Peter"];NSLog(@"%@",arr);//5.查找元素BOOL isResearch=  [arr containsObject:@"Peter"];NSLog(@"%d",isResearch);//6.调换元素[arr exchangeObjectAtIndex:0 withObjectAtIndex:3];NSLog(@"%@",arr);}
4)NSDictionary
```//NSDictionary的使用//1.创建空字典NSDictionary *dic0= [NSDictionary dictionary];NSLog(@"%@",dic0);//2.创建一族键值的字典NSDictionary*dic1= [ NSDictionary dictionaryWithObject:@"黄苹果"forKey:@"key"];//3.创建多组键值的字典NSLog(@"%lu",dic1.count);//返回空建的个数NSDictionary *dic2= [NSDictionary dictionaryWithObjectsAndKeys:@"shijiazhuang",@"sjz",@"baoding",@"bd",nil];NSLog(@"%@",dic2);//4/快速创建NSDictionary *dict3=@{@"ZX":@"zhangshan",@"xpd":@"Eric",@"jy":@"jiayou",};NSLog(@"%@",dict3);//5.通过key值确认value值NSArray *arr14=[dict3 allKeys];NSLog(@"!!!!!!%@",arr14);NSString *str13=[dict3 objectForKey:@"ZX"];NSLog(@"+++++%@",str13);// NSLog(@"%@",dict3[@"ZX"]);//6.遍历for (NSString *key in dict3) {NSLog(@"-------%@==%@",key,[dict3 objectForKey:key]);}//block方法[dict3 enumerateKeysAndObjectsUsingBlock:^(id key,id value, BOOL  *stop){NSLog(@"%@---------%@",key,value);}];//7、获取元素NSLog(@"*****%@",dict3[@"ZX"]);//8.把字典保存到文件中去,并且读取出BOOL(isWrite)= [dict3 writeToFile:@"/USers/mac/Desktop/fight.plist" atomically:YES];if (isWrite) {NSLog(@"写入成功");}NSDictionary* dict4=[NSDictionary dictionaryWithContentsOfFile:@"/USers/mac/Desktop/fight.plist"];NSLog(@"////////%@",dict4);应用:9.把河北省(石家庄市、保定市)和山东省(青岛市、济南市)NSArray *hebeiarr=[NSArray arrayWithObjects:@"shijiazhuang",@"baoding", nil];NSArray *shandarr=[NSArray arrayWithObjects:@"qingdao",@"jinan", nil];NSDictionary *city= [NSDictionary dictionaryWithObjectsAndKeys:hebeiarr,@"Hebei",shandarr,@"Shandong", nil];//写入文件BOOL iswrite=[city writeToFile:@"/Users/mac/Desktop/city.plist" atomically:YES];if (iswrite) {NSLog(@"写入成功");}//读取文件NSDictionary *readCity=[NSDictionary dictionaryWithContentsOfFile:@"/Users/mac/Desktop/city.plist"];NSLog(@"+++++========%@",readCity);return 0;
NSMutableDictionary
    //1.创建空字典NSMutableDictionary *dict1= [NSMutableDictionary dictionary];NSMutableDictionary *dict1= [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];//2.增加键值对[dict1 setValue:@"value" forKey:@"key"];//3.删除键值对[dict1 removeObjectForKey:@"key"];[dict1 removeAllObjects];//4.修改[dict1 setObject:@"value1" forKey:@"key"];dict1[@"key"]=@"XXXX"  ;//将key值修改为XXXX//5.查找NSArray * arr=[dict1 allKeys];if (arr containsObject:@"key1") {NSLog(@"value=%@",dict1[@"key1"]);}
3.Foundation的结构体类型1)Foundation框架常用结构体NSRange\CGRange、NSPoint\CGPoint、NSSize\CGSize、 NSRect\CGRect 的使用
//CGPoint的使用1>CGPoint\NSPoint一般用于表示点元素的坐标位置。CGPoint比较常用,因为CGPoint可以跨平台。2>可以使用NSMakePoint和CGPointMake方法创建CGPoint和NSPoint对象。开发中CGPointMake比较常用。例:NSPoint p = NSMakePoint(10,45);//从一个结构体变量获取坐标float x = p.x;float y = p.y;3>比较两个点是否相同(x、y)Bool b = CGPointEqualToPoint(CGPointMake(10,10),CGPointMake(10,10));原点可以使用CGPointZero,相当于CGPointMake(0,0);同CGSizeZero,CGRectZero,如:CGRect r4 = {CGPointZero,CGSizeMake(100,90)};//NSSzie的使用1>CGSize和NSSize表示一个UI元素的尺寸。2>可以使用CGSizeMake和NSMakeSize方法创建CGSize和NSSize对象。如:NSSize s = NSMakeSize(10,45)从一个结构体变量获取width,heigthfloat width = s.width;float height = s.heigth;//CGRect 的使用一个结构体由点、大小组成 ,存储一个矩形的起止点、长度和宽度;1>CGRect和NSRect表示一个UI元素的位置和尺寸。2>可以通过CGRectMake和NSMakeRect方法创建CGRect和NSRect对象。如:CGRect r1 = CGRectMake(0,0,150,100);NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height)3>比较两个Rect是否相同CGRectEqualToRect(CGRect rect1,CGRect rect2);4>判断CGRect中是否包含CGPointCGRectContainsPoint(CGRect rect,CGPoint point);NSRect r1 = NSMakeRect(0, 0, 100, 120);NSRect r2 = {0,0,100,120};//对结构体最底层的成员赋值NSRect r3;r3.origin.x = 0.0;r3.origin.y = 0.0;r3.size.width = 100.0;r3.size.height = 120.0;//打印结构体的方法NSString *s = NSStringFromPoint(point1);NSLog(@"%@",s);NSString *s1 = NSStringFromRect(rect1);NSLog(@"%@",s1);  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: