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;
读取指定路径的文件内容