OC基础-OC三大基本数据结构-NSString

一、OC三大基本数据结构概述

1.NSString: OC中的字符串。

基类:NSString: 字符串,不可变字符串,对象一旦创建,字符串的长度和内容不可变。

子类:NSMutableString: 可变字符串。

2.NSArray: OC中的数组。数组对象存储的地址是有顺序的元素。

基类: NSArray:数组

子类: NSMutableArray 可变数组

3.NSDicstionary: OC中的字典。字典对象存储的地址是没有顺序的键值对。与数组类似,但又区别于数组。

基类:NSDictionary:字典

子类:NSMutableDictionary: 可变字典


二、NSString的使用

1.C中的字符串和OC的字符串

OC完全兼容C,所以在OC中是可以使用C中的字符串的,但是OC有自己独有的创建字符串的方式。在OC中,字符串是一个类,每个创建的字符串都是类的对象。

创建和输出比较

char * p = "C str:hello world";
        NSLog(@"%s", p);
        
        NSString * str1 = @"OC str1: hello world";
        NSLog(@"%@", str1);

2.NSString对象的创建

//使用C的字符串来创建OC字符串对象
        NSString *str3 = [[NSString alloc] initWithUTF8String:"oc str3: hello world"];

        //使用格式符创建OC字符串
        NSString *str4 = [[NSString alloc]initWithFormat:@"oc str4:hello worl%c,%d",'d',4];
        
        //创建临时字符串
        NSString * str5 = [NSString stringWithUTF8String:"hello world"];
        NSString * str6 = [NSString stringWithFormat:@"hello %d %c",4,'A'];
        
        [str3 release];
        [str4 release];
使用init创建的字符串对象,需要手动调用release方法释放对象所占用的内存。而临时字符串会自动释放。


3.NSString的一些方法

 NSString *str7 = @"hello";
        NSString *str8 = @"hello";
        
        //1.比较字符串是否相同,相同未yes/1,不同为no/0
        BOOL ret = [str7 isEqualToString:str8];
        NSLog(@"%d",ret);
        
        //2.比较字符串大小,结果为枚举类型,-1/0/1
        NSComparisonResult ret2 =[str7 compare:str8];
        if(ret2 == NSOrderedAscending){
            NSLog(@"左边小");
        }else if (ret2 == NSOrderedSame){
            NSLog(@"相同");
        }else if(ret2 == NSOrderedDescending){
            NSLog(@"左边大");
        }
        
        //3.查找子 字符串
        NSString * s1 = @"I am a very good man";
        NSString * s2 = @"very";
        
        //在s1中查找s2,获得s2的位置和长度
        NSRange range = [s1 rangeOfString:s2];
        NSLog(@"location:%lu length:%lu", range.location,range.length);
        
        
        //4.截取已有字符串,生成新的字符串,原来的字符串不发生任何变化
        NSString * s3 = @"0123456789";
        NSString * s4 = [s3 substringToIndex:6];//[0,6)
        NSString * s5 = [s3 substringFromIndex:6];//[6,end],从0开始数
        NSRange range2 = {3, 4};//结构体第一个参数为起始位置,第二个为长度
        NSString * s6 = [s3 substringWithRange:range2];//传入一个range结构体对象
        NSString * s7 = [s3 substringWithRange:NSMakeRange(3, 4)];//直接创建一个range
        
        
        NSLog(@"s1:%@",s1);
        NSLog(@"s2:%@",s2);
        NSLog(@"s3:%@",s3);
        NSLog(@"s4:%@",s4);
        NSLog(@"s5:%@",s5);
        NSLog(@"s6:%@",s6);
        NSLog(@"s7:%@",s7);
 /*
  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s1:I am a very good man
  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s2:very
  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s3:0123456789
  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s4:012345
  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s5:6789
  2015-09-17 07:36:30.936 数据结构-NSString[2573:73722] s6:3456
  2015-09-17 07:36:30.936 数据结构-NSString[2573:73722] s7:3456
  */


三、NSMutableString的使用

NSMutableString类,可变字符串类的对象,内容可变,无外乎增删改查,对字符串内容进行修改。该类继承自NSString类,所以它除了能够使用NSString类的方法,还有一些自己独有的方法。

NSMutableString *s8 =@"hello";//这种做法是错误的
        NSMutableString * s9 = [[NSMutableString alloc] initWithCapacity:10];//创建一个长度为10的可变字符串
        NSMutableString * s10 = [[NSMutableString alloc] init];//创建一个空的可变字符串,然后给值
        [s10 setString:@"hello"];//s10 =>"hello"
        [s10 setString:@"world"];//s10=>"world",原来的内容被替换了
        
        NSLog(@"s10: %@", s10);
        
        //1.增,追加字符串
        [s10 appendString:@" world"];
        [s10 appendFormat:@"%c",'D'];
        NSLog(@"s10 :%@", s10);//world worldD
        
        //1.增,插入字符串
        [s10 insertString:@"hello " atIndex:0];
        NSLog(@"s10 :%@", s10);//hello world worldD
        
        //2.删,delete
        [s10 deleteCharactersInRange:NSMakeRange(3, 4)];
        NSLog(@"s10 :%@",s10);//helorld worldD
        
        //3.改,replace
        [s10 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"AB"];
        NSLog(@"s10 :%@", s10);//helABld worldD


@诗未冷学习博客



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是iOS Objective-C实现multipart/form-data格式上传文件的示例代码: ```objective-c // 设置请求URL NSURL *url = [NSURL URLWithString:@"http://example.com/upload"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 设置请求方法为POST [request setHTTPMethod:@"POST"]; // 设置请求头 NSString *boundary = @"Boundary+0xAbCdEfGbOuNdArY"; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; [request setValue:contentType forHTTPHeaderField:@"Content-Type"]; // 设置请求体 NSMutableData *body = [NSMutableData data]; // 添加文件数据 NSData *fileData = UIImageJPEGRepresentation(image, 1.0); if (fileData) { [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n", @"image.jpg"] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", @"image/jpeg"] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:fileData]; [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; } // 添加其他参数 NSDictionary *parameters = @{@"key1": @"value1", @"key2": @"value2"}; for (NSString *key in parameters) { [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"%@\r\n", parameters[key]] dataUsingEncoding:NSUTF8StringEncoding]]; } // 添加请求结束标志 [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; // 设置请求体长度 [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[body length]] forHTTPHeaderField:@"Content-Length"]; // 设置请求体 [request setHTTPBody:body]; // 发送请求 NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // 处理响应 }]; [task resume]; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值