读书人

IOS之Objective-C学习札记(五)

发布时间: 2012-06-20 20:37:21 作者: rapoo

IOS之Objective-C学习笔记(五)

今天记录一下学习Cocoa里有关里的Foundation框架。

1.首先Cocoa是由两个不同的框架组成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用户接口对象和高级类,Foundation框架中则有很多有用的,面向数据的低级类和数据类型。

2.范围的作用,看看一下结构体:

[plain] view plaincopy
  1. typedef struct _NSRange {
  2. unsigned int location;
  3. unsigned int length;
  4. }NSRange;//其中location表示字段存放该范围的起始位置,length表示是该范围内所含元素的个数。

例如:字符串”Objective-C is a cool language“中,单词”cool“可以用loaction为17,length为4的范围来表示。也许由于Locatio字段未被初始化,所以它 的值可以是NSNotFound,用来表示无意义范围。

可以用3种方式创建新的NSRange:

[plain] view plaincopy
  1. (1)直接给字段赋值
  2. NSRange range:
  3. range.location = 17;
  4. range.length = 4;
  5. (2)应用C的聚合结构赋值机制
  6. NSRange range = {17,4};
  7. (3)使用Cocoa提供的一个快捷函数NSMakeRange();
  8. NSRange range = NSMakeRange(17,4);

3.几何数据类型:

[plain] view plaincopy
  1. (1) NSPoint和NSSize,首先看看它们的结构体:
  2. typedef struct _NSPoint{
  3. float x ;
  4. float y;
  5. }NSPoint;
  6. typedef struct _NSSize{
  7. float width;
  8. float height;
  9. }NSSIze;
  10. (2)矩形类型NSRect
  11. typedef struct _NSRect{
  12. NSPoint origin;
  13. NSSize size;
  14. }NSRect;
  15. (3)它们也一样有:创建数据类型的快捷函数,NSMakePoint(),NSMakeSize()和NSMakeRect().

4.字符串类型操作:

[plain] view plaincopy[plain] view plaincopy
  1. (1)创建字符串,除了直接赋值创建NSString字符串外,还可以通过:stringWithFormat方法来通过
  2. 格式字符串和参数创建NSString的
  3. +(id) stringWithFormat : (NSString *)format, .........例子如下:
  4. NSString *height;
  5. height = [NSString stringWithFormat : @"Your height is %d feet,%d inches",5,11];
  6. 得到的字符串是“Your height is 5 feet, 11inches”.
  7. 这里需要注意的地方有两个,第一就是这个方法后面的省略号,表示这个方法可以接收多个以逗
  8. 号隔开的其他参数,第二就是方法声明的开头是一个+号,它代表创建该类的类对象,我们把这
  9. 种方法叫做“工厂方法”。
  10. (2)获得字符串大小:length,使用方法如下
  11. unsigned int length = [height length];
  12. 此方法可以准确无误地处理国际字符串。如俄文,中文,日文等。
  13. (3)NSString字符串比较操作:
  14. 1.-(BOOL) isEqualToString: (NSString *)aString; 使用如下
  15. NSString *thing1 = @“hello 2”;
  16. NSString *thing2 ;
  17. thing2 = [NSString stringWithFormat : @"hello %d",5 ];
  18. if ([thing1 isEqualToString : thing2]){
  19. NSLog(@"They are the same!");
  20. }//注意此方法是比较字符串指针向的值,而“==”比较的是指针值。
  21. 2.-(NSComparisonResult)compare : (NSString *)string;
  22. 用法如下,首先先看看NSComparisonResult结构体:
  23. typedef enum _NSComparisonResult{
  24. NSOrderedAscending = -1;
  25. NSOrderedSame,
  26. NSOrderedDEscending
  27. }NSComparisonResult;
  28. 例子:[@"zoinks" compare : @"jinies"]将会返回NSOrderedDescending
  29. (表示左侧的字符在右侧字符的后面)
  30. 3.-(NSComparisonResult) compare : (NSString *)string
  31. options : (unsigned)mask;
  32. options参数是一个位掩码,你可以使用位或运算符来添加选项标记。例子如下:
  33. if( [ thing1 compare : thing2
  34. options : NSCaseInsensitiveSearch | NSNumericSearch ]
  35. == NSOrderedSame)
  36. { NSLog (@"They match!") ; }
  37. (4)字符串内是否包含别的字符串
  38. 1 .-(BOOL)hasPrefix:(NSString *)aString;//检查字符串是否以另一个字符串开头
  39. -(BOOL)hasSuffix:(NSString *)aString;//检查字符串是否以另一个字符串结尾
  40. -(NSRange)rangeOfString: (NSString *)aString ;//将rangeOfString:发送给一个
  41. NSString对象时,传递的参数是要查找的字符串,它会返回一个NSRange struct 来告诉你
  42. 与这个字符串相匹配的 部分在哪里以及能够匹配上的字符串个数。
  43. 例子:NSRange range;
  44. NSString *filename = @"draft-chapter.pages";
  45. range = [fileName rangeOfString : @"chapter"];
  46. 返回的range.start为6,range.length为7.如果传递的参数在接收字符串中没有找到,那
  47. range.start则等于NSNotFound。

5.可变性,NSString是不可变的,这并不意味着你不能操作它们。Cocoa提供了一个NSString的子类,叫做NSMutableString(可以改变的字符串)

[plain] view plaincopy
[plain] view plaincopy
  1. (1)-(id)stringWithCapacity: (unsigned)capacity; //注意这个容量只是给NSMutableString的一个建议。
  2. 例子:string = [NSMutableString stringWithCapcity : 42];
  3. (2)有了一个可变的字符串,那就可以对它执行各种操作了:
  4. 1.-(void)appendString : (NSString *)aString;
  5. 2.-(void)appendFormat : (NSString *)format , ......;
  6. 例子:NSMutableString *string;
  7. string = [NSMutableString stringWithCapacity: 50];
  8. [ string appendString : @"Hello there"];
  9. [ string appendFormat : @"human %d!",39 ];
  10. 这段代码的运行结果是string被赋值为“Hello there human 39!”
  11. 3.-(void)deleteCharactersInRange : (NSRange) range;
  12. 我们经常会把deleteCharactersInRange:和rangeOfString:连在一起使用,例子:
  13. NSMuableString *friends;
  14. friends = [ NSMutableString stringWithCapacity: 50];
  15. [ friends appendString : @"JAmes BethLynn Jack Evan" ];
  16. 接下来,找到JAck的字符范围:
  17. NSRange jackRange;
  18. jackRange = [friends rangeOfString: @"Jack"];
  19. jackRange.length++;//这句的意思是,把后面的空格也算上。
  20. [ friends deleteCharactersInRange : jackRange ];
  21. 结果为:“James BethLynn Evan”

好了,今天就写到这里,继续会有更新,转载请注明:http://blog.csdn.net/yuzhiboyi

 

读书人网 >移动开发

热点推荐