Objective-C基本数据类型操作

来源:互联网 发布:淘宝买家退货率 编辑:程序博客网 时间:2024/05/16 00:36

1. 数据类型。
int %o
float %f
couble %
char %c


2.实例变量作用域的指令:
@protected 实例变量可被该类及任何子类中定义的方法直接访问(默认的情况)。
@private 实例变量可被定义在该类的方法直接访问,不能被子类定义的方法直接访问。
@public 实例变量可被该类中定义的方法直接访问,也可被其他类或模块中定义的方法访
问。使得其他方法或函数可以通过(->)来访问实例变量(不推荐用)。
@package 对于64 位图像,可以在实现该类的图像的任何地方访问这个实例变量。

 

3.字符串
NSString 
NSMutableString(可变)
NSMutableString *string = [NSMutableString stringWithCapacity :42];
可以使用appendString :或appendFormat : 来附加新字符串:
- (void) appendString :(NSString *)aString;
- (void) appendFormat :(NSString *)format , . . . ;
可以使用deleteCharactersInRange : 方法删除字符串中的字符
- (void) deleteCharactersInRange : (NSRange)range;


集合家族:
NSArray:用来存储对象的有序列表(任意类型的对象)
限制:只能存储Objective—C 的对象,不能存储C 语言的基本数据类型(int、float、enum、struct、或者NSArray
中的随机指针)。同时也不能存储nil(对象的零值或NULL 值)
//创建一个新的NSArray
NSArray *array =[NSArray arrayWithObjects : @"one",@"two", nil];
//获得包含的对象个数
- (unsigned)count;
//获得特定索引处的对象
- (id)objectAtIndex :( unsigned int)index ;

切分数组:
使用componentsSeparatedByString : 来切分NSArray,
NSString *string = @"oop : ack : bork : greeble : ponies" ;
NSArray *chunks = [string componentsSeparatedByString : @":"];
使用componentsJoinedByString : 来合并NSArray 中的元素并创建字符串
string = [chunks componentsJoinedByString :@":-)"] ;
NSArray 是不可变数组,数组中包含的对象是可以改变的,但是数组对象本身是不会改变的。
可变数组NSMutableArray 通过类方法arrayWithCapacity : 来创建可变数组
+ (id)arrayWithCapacity :( unsigned)numItems ;
NSMutableArray *array = [NSMutableArray arrayWithCapacity : 17];
使用addObject : 在数组末尾添加对象
- (void)addObject :( id)anObject

删除特定索引的对象
- (void)removeObjectAtIndex :( unsigned)index;
注:可变数组还可以在特定索引处插入对象,替换对象,为数组排序,NSArray 还提供了大量好用的功能。


枚举:
NSEnumerator 用来描述这种集合迭代器运算的方法:
要想使用NSEnumerator,需要通过objectEnumerator 向数组请求枚举器:
- (NSEnumerator *) objectEnumerator;
可以像这样使用这个方法:
NSEnumerator *enumerator;
enumerator = [array objectEnumerator ];
注:若想从后向前枚举集合,使用方法reverseobjectEnumerator ; 也可以使用。
获得枚举器以后,开始while 循环,每次循环都向这个枚举器请求它的nextObject
- (id)nextObject;//返回nil 表明循环结束
注:在枚举的过程中不能改变数组容器。
快速枚举示例:
for(NSString *string in array){
NSLog(@"I found %@", string);
}

 

连接字符串

  1. NSArray *strings = ... ;
  2. string = [strings componentsJoinedByString: @" :-) "];
  3. // 结果:string1:-)string2:-)......

 

分割字符串

  1. NSString *string = @"string1:string2:string3:string4:string5";
  2. NSArray *chunks = [string componentsSeparatedByString: @":"];

 

转成数值

  1. NSString *string = ...;int intValue = [string intValue]; // int数值
  2. float floatValue = [string floatValue]; // float数值
  3. double doubleValue = [string doubleValue]; // double数值

 

从字符串中去除换行

  1. 可以使用上面提到的分割字符串,然后再将它们连接起来。但是采用下面的方式更好一些。
  2. NSMutableString *mstring = [NSMutableString stringWithString:string];
  3.  NSRange wholeShebang = NSMakeRange(0, [mstring length]);
  4. [mstring replaceOccurrencesOfString: @"" withString: @"" options: 0 range: wholeShebang];

这个方法也可以用来替换字符串。这种方法比分割/连接字符串的方法稍微快一点儿,但不是很明显。处理长度1500000的字符串,当中有36909个换行,分割/连接的方法要0.124秒,这个方法要0.071秒。

 

取得子字符串

  1. NSRange range = [[string name] rangeOfString: otherString options: NSCaseInsensitiveSearch];

 

取得当前日期的字符串

  1. 通常将Date转化成NSString的方法是使用NSDateFormatter,但有时候可以使用特殊方法更简单的进行转化。比如想得到:“December 4, 2007”
  2. [[NSDate date] descriptionWithCalendarFormat: @"%B %e, %Y" timeZone: nil locale: nil]

 

Trim一个NSString

  1. NSString *ook = @"\n \t\t hello there \t\n \n\n";
  2. NSString *trimmed = [ook stringByTrimmingCharactersInSet:
  3. [NSCharacterSet whitespaceAndNewlineCharacterSet]];
  4. // 结果是hello there

 

 按行处理一个字符串

如果一个本文文体,每一行是一条数据,想循环处理每一条数据要怎么做简单呢。看下面的例子:

  1. NSMutableArray *altitudes = [NSMutableArray array];
  2. NSString *altitudeString = [self altitudeStringFromGoogle: coords];
  3. [altitudeString enumerateLinesUsingBlock: ^(NSString *line, BOOL *stop) {
  4. float value = [line floatValue];
  5. [altitudes addObject: [NSNumber numberWithFloat: value]];
  6. }];

 

 

 

 

 

 

 

 

将字符串放在剪贴板上的方法

  1. @implementation NSString (PasteboardGoodies)
  2. - (void) sendToPasteboard
  3. {
  4. [[NSPasteboard generalPasteboard]
  5. declareTypes: [NSArray arrayWithObject: NSStringPboardType]
  6. owner:nil];
  7. [[NSPasteboard generalPasteboard]
  8. setString: self forType: NSStringPboardType];
  9.  }
  10. // sendToPasteboard@end // PasteboardGoodies
0 0
原创粉丝点击