已经学习了很长时间的ios 但是发现对于数字,字符串 和集合 这些零碎的东西账务的并不太好 今天就干脆整理一下 就当是做个小的笔记吧 如果哪一点总结的不好或者是你认为写的太过简略 还请各位大虾们给出意见 多多益善哟
一、数字对象
我们所讨论过的数字类型int型 float型和long型,他们都不是对象,不能像他们发送消息。使用Foundation的对象NSArray,可以设置一个用于存储值的数组,这些值必需是对象,因此不能将任何基本类型直接存储到这些数组中。要存储任何基本数据类型,可以使用NSNumber类根据这些数据类型来创建对象
例如:
NSNumber *myNumber,*floatNumber,*intNumber;
intNumber = [NSNumber numberWithInter:100];
myNumber=[NSNumber numberWithLong:0xabcdef];
myNumber =[NSNumber numberWithChar:'X'];
floatNumber=[NSNumber numberWithFloat:100.00];
NSNumber的创建方法和检索方法
创建和初始化类方法 numberWithChar numberWithInteger numberWithFloat
初始化实例方法 initWithChar initWithInteger initWithFloat
检索实例方法 charValue integerValue floatValue
在if语句中,消息表达式[intNumber isEqualToNumber:floatNumber] 使用isEqualToNumber:方法根据数值比较两个NSNumber对象,该程序测试返回的Boolean值以查看这两个值是否相等 可用compare:方法来测试一个数执行的值是否在数值上小于,等于或大于另一个值 消息表达式【intNumber compare:myNumber】在intNumber中的值小于myNumber中的值时,返回值NSOrderedAscending,如果两个数相等返回值为NSOrderedSame,如果intNumber中的值大于myNumber中的值时,返回值NSOrderedDescending 在NSObject.h中已经定义了这些返回值
所有的数字对象都必须是新创建的所以创建myNumber 必须用myNumber = [[NSNumber alloc]initWithInt:1000]; 使用完后 用[myNumber release];来释放
二、字符串对象
1. stringWithString 生成新的字符串
NSString *res = [NSString stringWithString:str1]; 这里的意思是 对字符串内容的复制 而不是对内存中的同一字符串的引用。既str1和res是不同的字符串对象
res = str1 这仅仅创建了内存中同一对象的另一个引用
2.stringByAppendingString 用来连接两个字符串
[sr1 stringByAppendingString:str2]; 创建了一个新对象,这个由str1之后是str2的字符组成,返回结果 但原字符串对象str1和str2没有改变
3.比较字符串是否相等 isEqualToString compare caseInsensitiveCompare
isEqualToString:方法来检测两个字符串是否相等 既 是否包含相同的字符
compare:如果要对字符串数组进行排序 与前面来比较两个NSNumber对象的compare:方法相似 :如果从词汇上说第一个字符串小于第二个字符串,则结果
是NSOrderedAscending,如果两个字符串相等返回值为NSOrderedSame,第一个字符串大于第二个字符串 返回值NSOrderedDescending
caseInsensitiveCompare 如果不想执行大小写敏感的比较
uppercaseString和lowercaseString方法 他们分别将字符串转换成大写字符和小写字符 这个操作也没有改变原字符串
4.截取字符串
res = [[str1 substringFromIndex:8]substringToIndex:6];
使用substringFromIndex:方法从索引数8开始直到字符串结尾的字符
使用substringToIndex: 方法,以获得前6个字符
res=[str1 substringWithRange:NSMakeRange(8,6)]; 这个函数与上面的函数功能相同
5.查找字符串 rangOfString
subRange = [str1 rangeOfString:@"string A"];
subRange.location 给出了该结构中成员location的值
subRang.length 给出了该结构中成员length的值
6.插入字符串
insertString:atIndex 方法将指定的字符串插入接受者,插入点从制定的索引值开始
appendingString 是一个字符串插入到另一个字符串的结尾
7.删除 替换 字符串
[mstr deleteCharactersInRange :NSMakeRange(16,13)];
[mstr replaceCharactersInRange :NSMakeRange(16,13) withString:@"aaaaaaa"];
删除在这个范围内的字符串 替换在这个范围内的字符串 用给出的字符串
[mstr replaceOccurrencesOfString:@"bbbbbbb" withString:@"aaaaaa" options:nil range:NSMakeRange(0,[mstr length])]; 这样避免了在替换当中恰玛在的无限循环
8.对常见字符串用法总结
在下面的总结中 url是一个NSURL对象,path是指明文件路径NSString对象,nsstring是一个NSString对象,i是表示字符串中有效字符数的NSUInteger值,enc是指明字符编码的NSStringEncoding对象,err是描述所发生错误的NSError对象,size和opts是NSUInteger,range是指示字符串中有效范围的NSRange
+(id)stringWithContentsOfFile:path encoding:enc error:err 创建一个新字符串并将其设为path指定的文件内容,使用字符编码enc,如果非零,则返回err中的错误
+(id)stringWithContentsOfURL:url encoding:enc error:err 创建一个新字符串并将其设为url的内容,使用字符编码enc,如果非零,则返回err中的错误
+(id)stringWithCapacity:size 创建一个字符串,初始包含size的字符
+(id)string 创建一个新的空字符串
+(id)stringWithString:nsstring 创建一个新字符串,并将其设置为nsstring
-(id)initWithCapacity:size 使用初始容量为size的字符来初始化字符串
-(id)initWithString:nsstring 将新分配的字符串设置为nsstring
-(id)initWithContentsOfFile:path encoding:enc error:err 将字符串设置为path指定的文件的内容
-(id)initWithContentsOfURL:url encoding:enc error:err 将字符串并设置为url的内容,使用字符编码enc,如果非零,则返回err中的错误
-(UNSIgned int)length 返回字符串中的字符数目
-(unichar) characterAtIndex:i 返回索引i的Unicode字符
-(NSString *)substringFromIndex:i 返回从i开始直到结尾的子字符串
-(NSString *)substringWithRange:range 根据指定范围返回子字符串
-(NSString *)substringToIndex:i 返回从该字符串开始位置到索引i的子字符串
-(NSComparator *)caseInsensitiveCompare:nsstring 比较两个字符串,忽略大小写
-(NSComparator *)compare:nsstring 比较两个字符串
-(BOOL) hasPrefix:nsstring 测试字符串是否以nsstring开始
-(BOOL)hasSuffix :nsstring 测试字符串是否以nsstring结果
-(BOOL)isEqualToString:nsstring 测试字符串是否相等
-(NSString *)capitalizedString 返回每个单词首字母大写的字符串(每个单词的其余字母转换为小写)
-(NSString *)lowercaseString 返回转换为小写的字符串
-(NSString *)uppercaseString 返回转换为大写的字符串
-(const char *)UTF8String 返回为UTF-8字符串的字符串
-(double)doubleValue 返回转换为double的字符串
-(float)floatValue 返回转换为浮点值的字符串
-(NSInteger)integerValue 返回转换为NSInteger整数的字符串
-(int)intValue 返回转换为整数的字符串
三、数组对象
NSArray *mouthNames = [NSArray arrayWithObjects:
@"January",@"February",@"March",@"April",
@"May",@"June",@"July",@"August",@"September",
@"October",@"November",@"December",nil];
for(i=0;i<12;i++)
{
NSLog(@"%2i %@",i+1,[mouthNames objectAtIndex: i]);
}
arrayWithObjects:可以用来创建使用一列对象作为元素的数组
objectAtIndex: 从数组中提取每个元素
addObject:方法向数组的末尾添加一个对象
四、数组排序
如果地址簿包含大量的记录,那么按字母将其排序可能很方便。通过在AddressBook类中增加sort方法并利用NSMutableArray类中名为sortUsingSelector:的方法,可以很容易地实现这项功能。sort方法使用一个selector作为其参数,sortUsingSelector:方法使用这个selector来比较两个元素。数组可包含任何类型的对象,所以实现一般排序方法的唯一途径就是先判断数组中的元素是否有序。为此必需添加一个方法用于比较数组中的两个元素。如果希望排序方法使排序后原数组中的第一条记录位于第二条之前,那么,方法的返回值是NSOrderedAscending ,相等返回值是NSOrderedSame,否则,返回值为NSOrderedDescending
-(void)sort
{
[book sortUsingSelector:@selector(compareNames:)];
}
-(NSComparisonResult)compareNames:(id)element
{
return [name compare:[element name]];
}
常用NSArray方法
+(id) arrayWithObjects:obj1,obj2,……nil 创建一个新数组,obj1,obj2,……是其对象
-(BOOL)containsObject:obj 确定数组中是否包含对象obj
-(NSUInteger)count 数组中元素的个数
-(NSUInteger)indexOfObject:obj 第一个包含对象obj的元素索引号
-(id)objectAtIndex:i 存储在元素i的对象
-(void)makeObjectsPerformSelector:(SEL)selector 将selector指示的消息发送给数组的每一个元素
-(NSArray *)sortedArrayUsingSelector:(SEL)selector 根据selector指定的比较方法对数组进行排序
-(BOOL)writeToFile:path atomically: 将数组写入指定的文件中,如果flag为YES,那么先创建一个临时文件
五、词典对象
NSMutableDictionary *glossary = [NSMutableDictionary dictionary];
用这句代码创建一个空的可变词典 随后使用setObject:forKey方法将健和值对添加到词典中。生成词典后,可以使用objectForKey:方法检索给定健的值
NSMutableDictionary *glossary =[NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"bbb",@"ccc",nil];
for(NSString *key in glossary)
{
NSLog(@"%@%@",key,[glossary objectForKey:key]);
}
使用dictionaryWithObjectsAndKeys:方法和带有初始健-值对的词典,这样就创建了一个不可变词典,该程序还显示如何使用快速枚举循环一次一个键地从词典检索各个元素。不像数组对象,词典对象是无序的。所以,枚举词典时,放到词典中的第一个健-对象对不一定是第一个提取的
dictionaryWithObjectsAndKeys: 使用健-对象对{key1,obj1},{key2,obj2}……创建词典
-(id)initWithObjectsAndKeys: 将新分配的词典初始化为健-对象对{key1,obj1},{key2,obj2}……
-(unsigned int)count 返回词典中的记录数
-(NSEnumerator *)keyEnumerator 为词典中所有健返回一个NSEnumerator对象
-(NSArray *)keysSortedByValueUsingSelector:(SEL)selector 返回词典中的健数组,他根据selector指定的比较方法进行了排序
-(NSEnumerator *)objectEnumerator 为词典中的所有值返回一个NSEnumerator对象
-(id)objectForKey:key 返回指定key的对象
+(id)dictionWithCapacity:size 使用一个初始指定的size创建可变词典
-(id)initWithCapacity 将新分配的词典初始化为指定的size
-(void)removeAllObjects 删除词典中所有的记录
-(void)removeObjectForKey:key 删除词典中指定key对应的记录
-(void)setObject:obj forKey:key 向词典为key健添加obj,如果key已存在,则替换该值
六、集合对象
setWithObjects:根据一个以nil结尾的对象列表创建新的集合。
-(BOOL)isEqualToSet:nsset 方法检测集合set1和set2是否想等
containsObject:方法查询整数10是否在集合中 返回BOOL类型
addObject:方法和removeObject:方法分别从集合中添加元素和删除元素
intersect:和union:方法用于计算两个集合的交集和并集
countForObject:方法用于在集合中检索某个对象的count值
-(id)initWithObjects:obj1,obj2,……nil 使用一列对象初始化新分配的集合
-(NSInteger)count 返回集合的成员个数
-(BOOL)member:obj 使用isEqual方法确定集合是否包含obj
-(NSEnumerator *)objectEnumerator 为集合中每个对象返回一个NSEnumerator对象
-(BOOL)isSubsetOfSet:nsset 确定receiver的每个成员是否都出现在nsset中
-(BOOL)intersectsSet:nsset 确定是否receiver中至少一个成员出现在对象nsset中
-(id)setWithCapacity:size 创建新集合,时期具有存储size个成员的初始空间
-(id)initWithCapacity:size 将新分配的集合设置为size个成员的存储空间
-(void)addObject:obj 将对象obj添加到集合中
-(void)removeObject:obj 从集合中删除对象obj
-(void)removeAllObjects 删除接收者的所有成员
-(void)unionSet:nsset 将对象nsset的所有成员添加到接受者
-(void)minusSet:nsset 从接收者中删除nsset的所有成员
-(void)intersectSet:nsset 将接受者中所有不属于nsst的元素删除