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

黑马程序员--学习OC Foundation1

2015-08-08 22:41 477 查看

OC-Foundation1

1、字符串比较函数compare

compare 方法返回的结果有三种:

NSOrderedAscending,NSOrderedSame,NSOrderedDescending,

str > str2

str < str2

str == str2

NSOrderedDescending NSOrderedAscending NSOrderedSame 0

compare这个函数不能增加条件,比较字符串大小,可以指定条件。

常见的有3个

NSCaseInsensitiveSearch:不区分大小写字符。

NSLiteralSearch:进行完全比较,区分大小写。(默认)

NSNumericSearch:比较字符串的字符个数,而不是字符值。

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {

NSString *str1=@"abc";
NSString *str2=@"Abcd";
NSComparisonResult result=[str1 compare: str2];
NSComparisonResult result1=[str1 compare:str2 options:NSCaseInsensitiveSearch];
NSComparisonResult result2=[str1 compare:str2 options:NSCaseInsensitiveSearch |NSNumericSearch];
NSLog(@"%ld",result);
NSLog(@"%ld",result1);
NSLog(@"%ld",result2);

}
return 0;
}


判断两个字符串内容是否相等,使用的是isEqualToString:,它是区分大小写的。

[str1 isEqualToString:str2];

它的返回值值布尔类型的。

如何检测这个字符串是否是一个网址

[ str hasPerfix:@“要检测的内容”]

检测字符串的后缀

[str hasSuffix:@“待检测的后缀”]

字符串查找:

NSString *str3=@"asdasfsdfsdfiossdad";
NSString *str4=@"ios";
//查找字符串4在字符串3中首次出现的位置和长度
//range是结构体变量,NSRange结构体别名
NSRange range= [str3 rangeOfString:str4];
NSLog(@"%ld,%ld",range.location,range.length);


如果查找不到,返回信息

location NSNotFound

lenth 0

NSRange的使用

NSRange是Foundation框架中比较常用的结构体, 它的定义如下:

typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;


NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

NSRange有2个成员:


NSUInteger location : 表示该范围的起始位置

NSUInteger length : 表示该范围内的长度

OC中NSRange创建的方式

NSRange range=NSMakeRange(5, 8);

查看结构体变量的值

NSLog(@”%@”,NSStringFromRange(range));

字符串的截取

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1)从xx位置开始到结束(包含xx这个位置)
NSString *str1=@"wushidaniu";
NSString *str2=[str1 substringFromIndex:3];
NSLog(@"str2=%@",str2);

//2)从开始位置,到xx位置结束(不包含xx这个位置)
NSString *str4=[str1 substringToIndex:3];
NSLog(@"st42=%@",str4);

//3)截取一个范围
NSRange r1={3,4};
NSString *str6=[str1 substringWithRange:r1];
NSLog(@"str6=%@",str6);

}
return 0;
}


字符串的替换

NSString *str=@"<asd>传智</asd>";
//stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换的内容"
NSString *newStr=[str stringByReplacingOccurrencesOfString:@"传智" withString:@"黑马"];
NSLog(@"%@",newStr);


字符串转换成数据类型

- (double)doubleValue;

- (float)floatValue;

- (int)intValue;

去除所有的空格
[str stringByReplacingOccurrencesOfString:@” ” withString:@”“]

去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

NSArray

NSArray是OC中的数组类, 只能存放任意OC对象, 并且是有顺序的

不能存储非OC对象, 比如int\float\double\char\enum\struct等


它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不 能再往里面添加元素

NSarray创建方式

//创建一个空数组
NSArray *arr1=[NSArray array];
//创建数组,只有一个元素
NSArray *arr2=[NSArray arrayWithObject:@"w"];
//创建数组,有多个元素
NSArray *arr3=[NSArray arrayWithObjects:@"w",@"y",@"z", nil];
//调用对象方法,创建数组
NSArray *arr4=[[NSArray alloc]initWithObjects:@"a",@"b", nil];
//用一个数组创建另一个数组
NSArray *arr5=[NSArray arrayWithArray:arr4];
//简化创建一个数组
NSArray *arr6=@[@"no",@"yes",@"double"];
//用简化的方式访问数组
NSString *str=arr6[2];
//
NSarray遍历
//1)普通方式,通过下标访问
//简化创建一个数组

4000
NSArray *arr6=@[@"no",@"yes",@"double"];
for (int i=0; i<arr6.count; i++) {
NSLog(@"%@",arr6[i]);
}

//2)快速枚举法 for-in
for (NSString * str in arr6) {
NSLog(@"%@",str);
}

//3)使用block的方式
[arr6 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)      {
NSLog(@"%@,%lu",obj,idx);
}];


NSArray数据写入到文件中

//创建一个数组
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//写入数据到文件中
if([arr writeToFile:@"/Users/xiaoguai/Desktop/arr.plist" atomically:YES])
{ NSLog(@"写入成功!"); }


从文件读取数据到NSArray中

//创建一个数组,读取plist
NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/xiaoguai/Desktop/arr.plist"]; NSLog(@"%@",arr);


NSMutableArray

NSMurableArray是NSArray的子类,是可变的,可对元素进行增删查改操作

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1 创建一个空数组
NSMutableArray *arr=[NSMutableArray array];
//2 添加元素
[arr addObject:@"numone"];
[arr addObject:@"asd"];
[arr addObject:@"wsx"];
//3 插入一个元素到指定的位置
[arr insertObject:@"numtwo" atIndex:1];
//4 根据对象内容删除元素
[arr removeObject:@"numone"];
//4.1根据下标删除元素
[arr removeObjectAtIndex:0];
NSLog(@"%@",arr);
//4.2删除全部元素
[arr removeAllObjects];
//5 修改元素
[arr replaceObjectAtIndex:1 withObject:@"a"];
//5.1 修改元素
arr[0]=@"three";
NSLog(@"%@",arr);
//6 查找元素
bool isSearch=[arr containsObject:@"a"];
//7 交换元素
[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
}
return 0;
}


NSDictionary

NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值)

NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改

NSDictionary的创建;

//创建一个空字典
NSDictionary *dic=[NSDictionary dictionary];
//创建一组键值的字典
NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"周四" forKey:@"zs"];
//创建多组的字典
NSDictionary *dic2=[NSDictionary dictionaryWithObjectsAndKeys:@"发条",@"cg",@"船长",@"coco", nil];
//快速创建字典
NSDictionary *dic4=@{@"cm":@"冰女",@"jugg":@"剑圣",@"es":@"牛头"};
NSLog(@"%@",dic4);


NSDictionary的使用:

//获取字典长度
NSLog(@"dic2=%lu",dic4.count);
//根据key值取出value值
NSString *str=[dic4 objectForKey:@"cm"];
NSLog(@"str=%@",str);


NSDictionary的遍历

//字典的遍历
for (NSString *key in dic4) {
NSLog(@"key=%@,value=%@",key,[dic4 objectForKey:key]);
}

//方法二
[dic4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@=%@",key,obj) ;
}];


NSDictionary文件操作

写入一个字典数据

//快速创建字典
NSDictionary *dict3 = @{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"}; ;
//将字典写入到文件中
[dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES];


从文件中读取字典到内存中

(id)dictionaryWithContentsOfFile:(NSString *)path;

保存结果是xml文件格式,但苹果官方推荐为plist后缀。

把字典放到NSArray中,调用array的writeToFile

(id)dictionaryWithContentsOfURL:(NSURL *)url;

NSDictionary和NSArray对比

NSArray和NSDictionary的区别

1> NSArray是有序的,NSDictionary是无序的


2> NSArray是通过下标访问元素,NSDictionary是通过key访问元素

NSArray的用法

1> 创建
@[@”Jack”, @”Rose”] (返回是不可变数组)

2> 访问
id d = array[1];

3> 赋值
array[1] = @”jack”;

NSDictionary的用法

1> 创建
@{ @”name” : @”Jack”, @”phone” : @”10086” } (返回是不可变字典)

2> 访问
id d = dict[@”name”];

3> 赋值
dict[@”name”] = @”jack”;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: