黑马程序员--Foundation



1.NSString介绍NSMutableString介绍
1>
通过NSString进行文件读写
****
方式一,直接根据给定的路径来读写文件(一般用来读取本地文件) ****
*
文件写入:[str1 writeToFile:@"路径" atomically:YES
encoding:NSUTF8StringEncoding error:nil];
*
文件读取:[NSString stringWithContentsOfFile:@"路径"
encoding:NSUTF8StringEncoding error:nil];
****
方式二,根据给定的NSURL对象来读写文件(一般用来读取网络资源文件) ****
1>
根据路径创建NSURL对象。
**
创建NSURL的两种方式:
1. NSURL *url = [NSURL URLWithString:@"file:///Users/Steve/Desktop/
传智iOS13
-OC基础加强/PPTs/str1.txt"];
**
通过这种方式创建NSURL对象,需要指定协议类型,比如"http://""ftp://"
"
file://""https://"等协议。
**
通过这种方式创建的NSURL,如果路径中有中文,则无法正常使用,需要使用下面的方
式来创建。
2. NSURL *url = [NSURL fileURLWithPath:@"/Users/Steve/Desktop/
传智iOS13-OC
础加强/PPTs/str1.txt"];
**
这种方式创建的NSURL对象,默认就是读取本地文件的NSURL对象,"file://"开头
2>
根据NSURL对象来读取文件内容。
* [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:
&err];
2. NSString
的常见方法:
- (NSString *)uppercaseString;
全部字符转为大写字母
- (NSString *)lowercaseString
全部字符转为小写字母
- (NSString *)capitalizedString
首字母变大写,其他字母都变小写。如果一个句子中有多个单词,那么会将每个单词的首字母
变成大写,其余字母变成小写
- (BOOL)isEqualToString:(NSString *)aString;
两个字符串的内容相同就返回YES,否则返回NO
注意: ==比较的是两个对象的地址是否相同,不是字符串内容
- (NSComparisonResult)compare:(NSString *)string;
这个方法可以用来比较两个字符串内容的大小
比较方法:逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果
NSComparisonResult
是一个枚举,有3个值:
如果左侧 >右侧,返回NSOrderedDescending,
如果左侧 <右侧,返回NSOrderedAscending,
如果左侧 ==右侧返回NSOrderedSame
- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
忽略大小写进行比较,返回值与compare:一致
- (BOOL)hasPrefix:(NSString *)aString;
是否以aString开头
- (BOOL)hasSuffix:(NSString *)aString;
是否以aString结尾
- (NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含,就返回aString的范围
如果不包含, NSRangelocationNSNotFound,length0
反方向搜索:[strrangeOfString: @str options:NSBackwardsSearch]; // 从后向前
搜索
- (NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
- (NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- (NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target
withString:(NSString *)replacement;
replacement替换target
- (NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
- (unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
字符串转为基本数据类型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (char *)UTF8String; //
在操作SQLite数据库时才会用到
转为C语言中的字符串。
以后可能会用到别人的框架,都是纯C语言的,所以可能会用到把OC字符串转换为C语言的字
符串。
/**
参考代码:
C
语言字符串:
char *name =
steve;
NSString *s1 = @"123
;
char *s2 = s1.UTF8String;
printf("%s", s2);
*/
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" "withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

6> NSString的不可变性
* NSString *s1 = @"aa"; s1 = @"bb"; //
提问:这种情况是字符串发生改变了吗?回答:
这种情况只是指针变量s1重新指向了,分配好的字符串空间中的内容并没有发生改变。
*
为什么要有NSMutableString?因为如果使用NSString进行字符串拼接的时候,会产生大量
垃圾内存,创建很多无用的对象,浪费内存,消耗cpu性能。
1> C
语言中数组的弊端, intarray[4] = {10, 89, 27, 76};
*
只能存放一种类型的数据.(类型必须一致)
*
不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)
2> NSArray
的创建方式:
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
@[item1, item2, item3, ......];
---------------
根据文件来创建----------------
+ (id)arrayWithContentsOfFile:(NSString *)path; //
读取一个xml文件.
+ (id)arrayWithContentsOfURL:(NSURL *)url; //
读取一个xml文件.
3> NSArray
的特点:
*
只能存放任意OC对象,并且是有顺序的
*
不能存储非OC对象,比如int\float\double\char\enum\struct
*
它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,
不能再往里面添加元素
* NSArray
直接使用NSLog()作为字符串输出时是小括号括起来的形式。
* NSArray
中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标
记)。nil就是00也是基本数据类型,不能存放到NSArray中。
nil Nil NULL [NSNULL null];
* NSArray *array = [NSArray array]; //
这样的数组永远是空的,不可能向其中增加值。(不
可变性)
4> NSArray
的常见方法:
- (NSUInteger)count;
获取集合元素个数
- (id)objectAtIndex:(NSUInteger)index;
获得index位置的元素,等价于array[index];
- (BOOL)containsObject:(id)anObject;
是否包含某一个元素
- (id)lastObject;
返回最后一个元素
- (id)firstObject;
返回最后一个元素
- (NSUInteger)indexOfObject:(id)anObject;
查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound
- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
range范围内查找anObject元素在数组中的位置
- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;
5> NSArray
遍历元素
*
遍历,就是将NSArray里面的所有元素一个一个取出来查看
*
常见的遍历方式有
*
普通遍历
for (int i = 0; i<array.count; i++) { }
*
快速遍历
for (id obj in array) { }
*Block
遍历
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
}];
6>
将一个NSArray保存到文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
**
演示:把一个NSArray中的所有字符串元素写入到一个xml文件中。
**
注意:目前这里只支持NSArray中保存字符串、Dictionary或一写OC对象的数字类型写入文
件。(其他类型需要用到NSCoding协议)
7>
字符串拼接,字符串(NSString)的方法:
- (NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法,separator作拼接符将数组元素拼接成一个字符串
8>
字符串分割,数组(NSArray)的方法:
- (NSArray *)componentsSeparatedByString:(NSString *)separator;
这是NSString的方法,将字符串用separator作为分隔符切割成数组元素
9> NSMutableArray
的特点:
* NSMutableArray
NSArray的子类
* NSMutableArray
是可变的,随时可以往里面添加\更改\删除元素, NSArray是不可变的,一旦初
始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
*
创建一个空的NSMutableArray:NSMutableArray *array = [NSMutableArray array];
10> NSMutableArray
的常见方法:
- (void)addObject:(id)object;
添加一个元素
- (void)addObjectsFromArray:(NSArray *)array;
添加otherArray的全部元素到当前数组中
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
index位置插入一个元素
- (void)removeLastObject;
删除最后一个元素
- (void)removeAllObjects;
删除所有的元素
- (void)removeObjectAtIndex:(NSUInteger)index;
删除index位置的元素
- (void)removeObject:(id)object;
删除特定的元素
- (void)removeObjectsInRange:(NSRange)range;
删除range范围内的所有元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
anObject替换index位置对应的元素,等价于array[index]= anObject;
- (void)exchangeObjectAtIndex:(NSUInteger)idx1withObjectAtIndex:(NSUInteger)idx2;
交换idx1idx2位置的元素
***
注意: @[item1,item2, item3]这种方式创建的数组永远都是不可变的NSArray
7. NSDictionary
介绍NSMutableDictionary介绍
1> NSDictionary
是不可变的,一旦初始化完毕,里面的内容就无法修改
2> NSDictionary
是以"键值对"的方式来保存数据。
3> NSDictionary
的创建方式:
+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id<NSCopying>)key; //
objectForKey
,根据键取值。
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
@{@"zs" : @"zhangsan", @"ls" : @"lisi",@"ww" : @"Wangwu"};
4> NSDictionary
的常见方法:
- (NSUInteger)count;
返回字典的键值对数目
- (id)objectForKey:(id)aKey;
根据key取出value,等价于:dict[aKey];
*
快速遍历
for (NSString *key in dict) { }
* Block
遍历
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
}];
**
注意:字典遍历的顺序是不一定的。]
5>
将字典中的内容写入到文件:
*
将字典写入文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
*
将文件中的数据读取到字典中:
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;
*
要求掌握:
1.
直接调用dictwrieToFile方法
2.
把多个dict加到array中调用arraywriteToFile方法。
3.
从文件中读取数据到字典
**
注意:字典中的键不要重复。(虽然重复也不报错,会自动取在前面的那个)
6> NSMutableDictionary
* NSMutableDictionary
NSDictionary的子类
* NSDictionary
是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面
的元素,也不能再往里面添加元素
* NSMutableDictionary
是可变的,随时可以往里面添加\更改\删除元素
7> NSMutableDictionary
的常见操作
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
添加一个键值对(会把aKey之前对应的值给替换掉),等价于:dict[@"name"] = @"Jack";
- (void)removeObjectForKey:(id)aKey;
通过aKey删除对应的value
- (void)removeAllObjects;
删除所有的键值对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值