Objective-C边学边记-7:Foundation Kit快速教程之 范围、几何数据类型、字符串
2010-10-25 02:49
579 查看
Cocoa是由两个不同的框架组成:Foundation Kit 和 Application Kit(AppKit)。AppKit包含了所有的用户接口对象和高级类。
1.范围
NSRange:用来表示相关事物的范围,定义于NSRange.h。通常是字符串里的字符范围或者数组(NSArray)里的元素范围。
创建方法:
直接给字段赋值:
或者,应用C语言的聚合结构赋值机制:
或者,适用Cocoa提供的函数NSMakeRange():
使用NSMakeRange函数的好处是你可以在任何能够使用函数的地方使用它。
2.几何数据类型
点:NSPoint //NSRange.h
尺寸:NSSize //NSGeometry.h
矩形:NSRect //NSGeometry.h
创建函数:NSMakePoint() , NSMakeSize() , NSMakeRect()
将这些数据类型定义成C的struct而不是Objective-C的对象最根本的原本是因为性能。
3.字符串
1)创建格式字符串:NSSring的stringWithFormat:
2)NSString中的length方法返回字符串中的个数,可以处理国际字符串。如
3)isEqualToString:字符串比较,返回BOOL
compare:逐个字符进行比较,
compare:options: 带选项的比较字符串
返回一个NSComparisonResult的枚举值:
“==”运算符只判断两个字符串的指针数值,而不是它们所指的对象,以下例子请区别:
NSString *thing1 = @"hello,8";
NSString *thing2 = [NSString stringWithFormat:
@"hello,%d",8];
if ([thing1 isEqual: thing2]){
NSLog(@"Yes,they are the same.");
} else {
NSLog(@"NO,they are not the same.");
}
if (thing1 == thing2){
NSLog(@"thing1 == thing2");
} else{
NSLog(@"thing1 != thing2");
}
输出:
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] Yes,they are the same.
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] thing1 != thing2
字符串匹配查询
// 检查字符串是否以另一个字符串开头
// 检查字符串是否以另一个字符结尾
例如:
// 查询是否包含某字符串,返回匹配部分在哪里以及能够匹配的字符个数(NSRange类型)
Returns {NSNotFound, 0} if aString is not found or is empty (@"").
4)可变性
NSString是不可变的,一旦NSString被创建,就不能改变它。可以用它来生成新的字符串,查找字符串或将它与其他字符串比较,但是不能以删除字符或者添加字符的方式来改变它。
如果想改变字符串,请使用NSString的子类NSMutableString。
NSString类似Java中的String,NSMutableString类似与Java中的StringBuffer。
创建NSMutableString:stringWithCapacity:
这个capacity(容量)只是给NSMutableString的一个建议,字符串的大小并不限制与所提供的capacity,这个capacity只是个最优值。
一旦有了一个可变字符串,就可以对它执行各种操作了。
附加字符串:appendString: 或 appedFormat:
由于NSMutableString是NSString的之类,所以在任何使用NSString的地方都可以用NSMutableString代替,与实例方法一样,继承同样对类方法(类似其他语言中的静态方法,定义前缀为加号 + )也适用。
Example:
OBJECTIVE-C CODE :NSMutableString
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//NSMutableString
NSMutableString *string;
// 创建
string = [NSMutableString stringWithCapacity:40];
// append
[string appendString: @"Hello,"];
[string appendFormat: @"World! %d",1024];
NSLog(@"%@",string); // Hello,World! 1024
// delete characters
NSRange worldRange;
worldRange = [string rangeOfString: @"World"];
[string deleteCharactersInRange:worldRange];
NSLog(@"%@",string); // Hello,! 1024
// 由于NSMutableString是继承自NSString,
// 所以NSMutableString可以使用NSString的方法
NSMutableString *str;
str = [NSMutableString stringWithFormat: @"My age is %d",22];
NSLog(@"%@",str);
[pool drain];
return 0;
}
1.范围
NSRange:用来表示相关事物的范围,定义于NSRange.h。通常是字符串里的字符范围或者数组(NSArray)里的元素范围。
typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
创建方法:
直接给字段赋值:
NSRange range; range.location = 17; range.length = 4;
或者,应用C语言的聚合结构赋值机制:
NSRange range = {17,4};
或者,适用Cocoa提供的函数NSMakeRange():
NSRange range = NSMakeRange ( 17 ,4 );
使用NSMakeRange函数的好处是你可以在任何能够使用函数的地方使用它。
2.几何数据类型
点:NSPoint //NSRange.h
typedef struct _NSPoint { CGFloat x; CGFloat y; } NSPoint;
尺寸:NSSize //NSGeometry.h
typedef struct _NSSize { CGFloat width; CGFloat height; } NSSize;
矩形:NSRect //NSGeometry.h
typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
创建函数:NSMakePoint() , NSMakeSize() , NSMakeRect()
将这些数据类型定义成C的struct而不是Objective-C的对象最根本的原本是因为性能。
3.字符串
1)创建格式字符串:NSSring的stringWithFormat:
NSString *myName; myName = [NSString stringWithFormat: @"My name is %@ , and I am %d yeas old.", @"Elf Sundae",22];
2)NSString中的length方法返回字符串中的个数,可以处理国际字符串。如
NSLog(@"%d",[@"test测试" length]); //返回6
3)isEqualToString:字符串比较,返回BOOL
NSString *thing1 = @"hello,8"; NSString *thing2 = [NSString stringWithFormat: @"hello,%d",7]; if ([thing1 isEqual: thing2]){ NSLog(@"Yes,they are the same."); } else { NSLog(@"NO,they are not the same."); }
compare:逐个字符进行比较,
- (NSComparisonResult)compare:(NSString *)aString
compare:options: 带选项的比较字符串
- (NSComparisonResult)compare:(NSString *)aString options:(NSStringCompareOptions)mask
返回一个NSComparisonResult的枚举值:
typedef enum _NSComparisonResult { NSOrderedAscending = -1, // < NSOrderedSame, // = NSOrderedDescending // > } NSComparisonResult;
“==”运算符只判断两个字符串的指针数值,而不是它们所指的对象,以下例子请区别:
NSString *thing1 = @"hello,8";
NSString *thing2 = [NSString stringWithFormat:
@"hello,%d",8];
if ([thing1 isEqual: thing2]){
NSLog(@"Yes,they are the same.");
} else {
NSLog(@"NO,they are not the same.");
}
if (thing1 == thing2){
NSLog(@"thing1 == thing2");
} else{
NSLog(@"thing1 != thing2");
}
输出:
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] Yes,they are the same.
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] thing1 != thing2
字符串匹配查询
// 检查字符串是否以另一个字符串开头
- (BOOL)hasPrefix:(NSString *)aString
// 检查字符串是否以另一个字符结尾
- (BOOL)hasSuffix:(NSString *)aString
例如:
BOOL b = [@"test" hasSuffix: @"st"];
// 查询是否包含某字符串,返回匹配部分在哪里以及能够匹配的字符个数(NSRange类型)
- (NSRange)rangeOfString:(NSString *)aString
Returns {NSNotFound, 0} if aString is not found or is empty (@"").
// rangeOfString:options: - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask
4)可变性
NSString是不可变的,一旦NSString被创建,就不能改变它。可以用它来生成新的字符串,查找字符串或将它与其他字符串比较,但是不能以删除字符或者添加字符的方式来改变它。
如果想改变字符串,请使用NSString的子类NSMutableString。
NSString类似Java中的String,NSMutableString类似与Java中的StringBuffer。
创建NSMutableString:stringWithCapacity:
+ (id) stringWithCapacity: (unsigned) capacity;
这个capacity(容量)只是给NSMutableString的一个建议,字符串的大小并不限制与所提供的capacity,这个capacity只是个最优值。
NSMutableString *string; string = [NSMutableString stringWithCapacity:42];
一旦有了一个可变字符串,就可以对它执行各种操作了。
附加字符串:appendString: 或 appedFormat:
由于NSMutableString是NSString的之类,所以在任何使用NSString的地方都可以用NSMutableString代替,与实例方法一样,继承同样对类方法(类似其他语言中的静态方法,定义前缀为加号 + )也适用。
Example:
OBJECTIVE-C CODE :NSMutableString
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //NSMutableString NSMutableString *string; // 创建 string = [NSMutableString stringWithCapacity:40]; // append [string appendString: @"Hello,"]; [string appendFormat: @"World! %d",1024]; NSLog(@"%@",string); // Hello,World! 1024 // delete characters NSRange worldRange; worldRange = [string rangeOfString: @"World"]; [string deleteCharactersInRange:worldRange]; NSLog(@"%@",string); // Hello,! 1024 // 由于NSMutableString是继承自NSString, // 所以NSMutableString可以使用NSString的方法 NSMutableString *str; str = [NSMutableString stringWithFormat: @"My age is %d",22]; NSLog(@"%@",str); [pool drain]; return 0; } |
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//NSMutableString
NSMutableString *string;
// 创建
string = [NSMutableString stringWithCapacity:40];
// append
[string appendString: @"Hello,"];
[string appendFormat: @"World! %d",1024];
NSLog(@"%@",string); // Hello,World! 1024
// delete characters
NSRange worldRange;
worldRange = [string rangeOfString: @"World"];
[string deleteCharactersInRange:worldRange];
NSLog(@"%@",string); // Hello,! 1024
// 由于NSMutableString是继承自NSString,
// 所以NSMutableString可以使用NSString的方法
NSMutableString *str;
str = [NSMutableString stringWithFormat: @"My age is %d",22];
NSLog(@"%@",str);
[pool drain];
return 0;
}
相关文章推荐
- Objective-C边学边记-11:Foundation Kit快速教程之 综合示例(查找某类型的文件)
- Objective-C边学边记-8:Foundation Kit快速教程之 数组、枚举
- Objective-C边学边记-9:Foundation Kit快速教程之 字典、类簇
- Objective-C边学边记-10:Foundation Kit快速教程之 各种数值(NSNumber,NSValue,NSNull
- bjective-C边学边记-7:Foundation Kit快速教程之 范围
- Objective-C边学边记-10:Foundation Kit快速教程之 各种数值(NSNumber,NSValue,NSNull
- Objective-C基础教程学习笔记(八)Foundation Kit快速教程
- Objective-C学习笔记第八章Foundation Kit快速教程
- Objective-C基础教程(第一版)-学习笔记第八章Foundation Kit快速教程
- [置顶] Objective-C基本数据类型取值范围、字节
- python教程1:Python基础之数据类型和变量、字符串和编码
- objective-c 中数据类型之一 几何数据类型(CGPoint,CGSize,CGRect)
- objective-c 中数据类型之二 字符串(NSString)
- Objective-C 的基本数据类型、数字、字符串和集合等介绍
- objective-c 中数据类型之一 几何数据类型(NSPoint,NSSize,NSRect)
- MySQL基础教程3 —— 数据类型之字符串类型
- 从字符串类型中读取出不在datetime类型数据范围内的记录
- MySQL基础教程18-Mysql数据类型-字符串类型
- opencl 初学笔记2- opencl快速入门教程【数据类型规范 , 命名原则】
- oc Foundation Kit快速教程