黑马程序员——Foundation框架入门:NSString,NSArray,NSDictionary和NSURL

本文详细介绍了Foundation框架中的核心类,如NSString、NSArray、NSDictionary和NSURL的使用方法。讲解了NSString的字符获取、长度计算、比较和截取等操作,NSArray的创建、遍历和操作,NSDictionary的键值对操作,以及NSURL的URL路径创建和资源访问。
摘要由CSDN通过智能技术生成

NSString

NSString的常用方法

  • - (unichar)characterAtIndex:(NSUInteger)index;

获取字符串中指定下标的字符。

可以使用该方法逐个输出字符串中的字符

  • - (NSUInteger)length;

获取字符串长度,指字符个数,一个英文字母或者一个汉字或者一个数字都是1的长度。

  • - (NSComparisonResult)compare:(NSString *)string;

比较两个字符串

  • - (BOOL)isEqualToString:(NSString *)aString;

比较两个字符串是否相等。使用全等符号“==”比较两个字符串实际上是比较两个字符串的地址,因此不使用于比较字符串内容是否相等。

  • - (BOOL)hasPrefix:(NSString *)aString;

​ 检查一个字符串是否具有给定的前缀

  • - (BOOL)hasSuffix:(NSString *)aString;

检查一个字符串是否具有给定的后缀

  • - (NSRange)rangeOfString:(NSString *)aString;

查找一个字符串在指定字符串中首次出现的位置,若没有找到则返回NSNotFound。

关于NSRange,这是一个结构体变量,包括两个元素,NSUInteger location和NSUInteger length。除了可以按照C语言的方法为他们赋值之外,还可以用NSMakeRange(NSUIntegerloc, NSUInteger len)函数为这两个变量赋值。在输出这两个值的时候,可以使用NSStringFromRange(NSRange range)函数将其转换为字符串输出。

  • - (NSString *)substringFromIndex:(NSUInteger)from;

从指定下标的字符截取到字符串末尾。

  • - (NSString *)substringToIndex:(NSUInteger)to;

从头截取字符串到指定的下标。

  • - (NSString *)substringWithRange:(NSRange)range;

传入一个NSRange类型的变量作为参数(包括位置和长度),截取给定位置和长度的字符串。

关于截取一段字符串中指定两个字符(a,b)之间的字符的方法

思路:找到a所在的位置,加1作为截取字符串函数的位置参数,找到b所在的位置减去a所在位置加1的值作为截取字符串函数的长度参数。例如:

NSString *str2 = @“<div>HELLO</div>";//截取其中的HELLO
NSUInteger loc = [str2 rangeOfString:@">"].location+1;
NSUInteger len = [str2 rangeOfString:@"</"].location- loc;
NSRange ran2 = NSMakeRange(loc,len);
NSString *str3 = [str2 substringWithRange:ran2];
  • - (NSString )stringByReplacingOccurrencesOfString:(NSString )target withString:(NSString *)replacement;

替换字符串内容。第一个参数target是原字符串中要被替换的内容,第二个参数replacement是替换后的内容。

  • 关于intValue,floatValue,doubleValue,integerValue和longLongValue

这些并不是NSString的方法,而是属性,使用点语法或者方括号都可以引用他们。以intValue为例,如果一个NSString对象的内容是整数,那么可以通过它获得该内容的int型变量,从而进行数学运算。

  • + (instancetype)stringWithUTF8String:(const char *);

将C语言的字符串转换为NSString。

NSString对象可以引用UTF8String属性获取内容的C字符串形式。

  • - (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set;

使用该方法可以去掉字符串首位的多余空格,参数需要填写whitespaceCharacterSet。

NSMutableString中的常用方法

  • - (void)appendString:(NSString *)aString;

向字符串中追加字符

  • - (void)appendFormat:(NSString *)format, … ;

格式化追加字符

  • - (void)deleteCharactersInRange:(NSRange)range;

删除range范围的字符串

  • - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;

在制定位置插入字符串

  • - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;

替换指定范围的字符串

NSArray

创建NSArray及基本操作

  • + (instancetype)arrayWithObjects:(id)firstObj, … ;

创建一个数组,添加参数作为数组的元素

  • - (instancetype)initWithObjects:(id)firstObj, … ;

用alloc方式创建数组。

  • + (instancetype)arrayWithArray:(NSArray *)array;

用一个数组作为参数创建一个新数组

  • 如何向NSAarray中赋空值?

NSArray是以nil作为结束标记的,所以向NSArray中赋值nil会导致数组在nil处结束。如果要向NSArray中赋空值,应该使用NSNULL,例如:NSArray arr =[[NSArray alloc]initWithObjects:@”2”,[NSNULL null], nil];

  • 如何打印NSArray数组?

NSArray是OC对象,可以直接使用NSLog中的%@输出,例如输出上例中的arr:NSLog(@”%@”,arr);

  • 简化的NSArray创建方法:

NSArray *arr = @[@3,@5,@”a”];

  • 简化的NSArray访问方法:

NSString *str = arr[2];

  • 遍历NSArray

除了传统的for循环遍历之外,还可以使用for循环快速枚举来实现遍历,例如:

for (NSString*str in arr) {
   NSLog(@"%@",str);
}

这样会依次将arr中的每个元素存入str中,然后打印str,直到最后一个元素nil,循环退出。

还可以使用- (void)enumerateObjectsUsingBlock:(void (^)(idobj, NSUInteger idx, BOOL *stop))block;方法实现遍历,举例:

[arrenumerateObjectsUsingBlock:^(id obj, NSUIntegeridx, BOOL *stop) {
  if (idx == 2){
      *stop = YES;//当遍历到下标为2的元素时停止遍历
  }else{
    NSLog(@"-->%@",obj);
  }
}];

NSArray的常用方法

  • - (id)objectAtIndex:(NSUInteger)index;

获取指定下标的元素

  • (BOOL)containsObject:(id)anObject;

判断数组是否包含指定元素

  • - (NSUInteger)indexOfObject:(id)anObject;

获取指定元素的下标

  • - (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

在制定范围内返回指定元素的下标

  • 将数组元素写入或读取到文件

    • 写入到文件

    - (BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliaryFile;

    • 从文件读取

      • (NSArray )arrayWithContentsOfFile:(NSString )path;
  • - (NSString )componentsJoinedByString:(NSString )separator;

将数组中的元素以所给定的字符连接,并转为NSString对象。

  • - (NSArray )componentsSeparatedByString:(NSString )separator;

将字符串中的内容以给定的字符分割,并转为NSArray对象。

NSArray的常用属性(通过点语法或方括号访问)

  • (readonly) NSUInteger count;

该属性存放数组的元素个数。

  • (nonatomic, readonly) id firstObject;

存放数组的第一个元素

  • (nonatomic, readonly) id lastObject;

存放数组的最后一个元素

NSMutableArray的常用方法

除了继承自NSArray的方法(如-(instancetype)initWithObjects:(id)firstObj, … ;)之外,还有一些NSMutableArray特有的方法。

  • + (instancetype)arrayWithCapacity:(NSUInteger)numItems;

创建指定长度的数组。

  • - (void)addObject:(id)object;

添加对象到指定数组

  • - (void)removeObject:(id)object;

从指定数组删除元素

  • - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

在指定位置插入元素

  • - (void)removeObjectAtIndex:(NSUInteger)index;

在指定位置删除元素

  • - (void)removeAllObjects;

删除所有元素

  • - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

替换指定位置的元素

也可以通过赋值的方式进行替换:arr[2]= @”aa”;

  • - (BOOL)containsObject:(id)anObject;

查找数组中是否存在给定的元素

  • - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

交换数组中指定位置的两个元素,可以用于打乱数组。

例如如果arr中有6个元素:

for (int i=0; i<6; i++){
  int n = arc4random_uniform(5);
   [arr exchangeObjectAtIndex:i withObjectAtIndex:n];
}

NSDictionary

基本操作

  • + (instancetype)dictionary;

创建空字典

  • + (instancetype)dictionaryWithObject:(id)object forKey:(id \

常用属性

  • (readonly) NSUInteger count;

存放字典中键值对的个数

  • (readonly, copy) NSArray *allKeys;

所有的key值

  • (readonly, copy) NSArray *allValues;

所有的value值

常用方法

  • - (id)objectForKey:(id)aKey;

返回指定key的value值

  • - (NSArray *)allKeysForObject:(id)anObject;    

返回指定value的所有key值

  • - (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))block;

遍历字典,举例:

[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
   NSLog(@"%@=%@",key,obj);
}];
  • 字典的读写

    • + (NSDictionary )dictionaryWithContentsOfFile:(NSString )path;
    • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

使用方法与数组读写相似

NSMutableDictionary

  • + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems;

创建指定长度的字典

  • - (void)setObject:(id)anObject forKey:(id NSCopying)aKey;

添加键值对

  • - (void)removeObjectsForKeys:(NSArray *)keyArray;

按key删除键值对

NSURL

  • URL是Uniform Resource Locator,统一资源定位符,是互联网上标准资源的地址,每个资源拥有一个唯一的地址

  • 基本的URL包含协议,主机域名和路径。

    • 常见协议类型

      • http/https:超文本传输协议
    • ftp:文件传输协议
    • file: 本地文件传输
  • 创建NSURL路径

    • + (instancetype)URLWithString:(NSString *)URLString;

    使用这种方式创建的NSURL需要指定协议类型,例如:@”file:///Users/Michael/Desktop/url.txt”

    • - (NSURL )fileURLWithPath:(NSString )path;

    这种方法创建的是本地文件传输路径,不需要加协议类型,例如:@”/Users/Michael/Desktop/url.txt”

  • - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

写入到指定URL中,例:

NSURL *url = [NSURL URLWithString:@"file:///Users/Michael/Desktop/url.txt"];
NSString *str = @"qqqqqq";
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

除了可以写入文件到系统路径之外,还可以到网络路径,或调用手机其他应用

  • + (instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

读取指定路径的文件内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值