黑马程序员--学习OC Foundation1

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)普通方式,通过下标访问
        //简化创建一个数组
        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”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值