黑马程序员——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;
读取指定路径的文件内容
相关文章推荐
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- Flex中最好的MVC框架Mate框架
- JavaScript 异步调用框架 (Part 4 - 链式调用)
- JavaScript 异步调用框架 (Part 2 - 用例设计)
- 为什么使用框架 使用框架的优缺点
- JavaScript 异步调用框架 (Part 3 - 代码实现)
- js刷新框架子页面的七种方法代码
- JavaScript框架编程第1/2页