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

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

2015-09-09 16:03 399 查看

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;[/b]

使用该方法可以去掉字符串首位的多余空格,参数需要填写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;

读取指定路径的文件内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  框架 foundation