表示范圍作用的結構體:NSRange:
有三種方式創建新的NSRange:
1、NSRange range;
range.location = 17;
range.length = 4;
2、NSRange range = {17 ,4};
3、NSRange range = NSMakeRange(17,4); (推薦)
表示用來處理幾何圖形的數據類型:NSPoint(點坐標)和NSSize(長度和寬度)還有一個矩形數據類
型(由點和大小復合而成)NSRect
Cocoa 提供創建這些數據類型方法:
NSMakePoint( )、
NSMakeSize()
NAMakeRect()
表示字符串的類NSString
NSString *heigth =[NSString stringWithFormat : @"You heigth is %d feet,%d inches", 5,11];
創建的類對象包含了指向超類的指針、類名和指向類方法的列表的指針。類對象還包含一個long 的數據, 為新創建的類對象指定大小。
返回字符串中的字符的個數:
unsigned int length = [heigth length];
返回Bool 值的字符串比較函數:
- (BOOL) isEqualToString :(NSString *)aString;//比較兩個字符串的內容是否相等
還可以使用compare :方法
-(NSComparisonResult)compare :( NSString *)string;//逐個字符比較
不區分大小寫的比較:
-(NSComparisonResult)compare :( NSString *)string options:( unsigned)mask;
注意:NSComparisonResult 是一個枚舉值 options 是一個位掩碼,即:
NSCaseInsensitiveSearch:不區分大小寫
NSLiteralSearch: 進行完全比較,區分大小寫
NSNumericSearch: 比較字符串的字符個數,而不是字符值
檢查字符串是否以另一個字符串開頭
-(BOOL)hasprefix : (NSString *)aString;
判斷字符串是否是以另一個字符串結尾
-(BOOL)hasSuffix : (NSString *)aString;
如果你想知道字符串內的某處是否包含其他字符串,使用rangeOfString : 方法
-(NSRange)rangeOfString :( NSString *)aString;
NSString 是不可變的,NSMutableString 是可變的。用方法stringWithCapacity :來創建 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);
}
數組排序:
例如:一條記錄就是一條卡片的信息,包括(NSString *name 和NSString *email)
-(void)sort
{
[book sortUsingSelector:@selector(compareNames:)]
}
其中:
@selector(compareNames:)
//創建一個SEL 類型的selector,sortUsingSelector:使用該方法比較數組中的兩個元素,
sortUsingSelector:方法需要完成這樣的比較,它先調用這個指定的selector 方法,然后向數組(接受 者)的第一條記錄發送消息,比較其參數和此記錄。指定方法的返回值為NSComparisonResult 類型,返 回值為:若小于返回NSOrderedAscending;相等返回NSOrderedSame;大于返回NSOrderedDescending
-(NSComparisonResult)compareNames:(id)element
{
return [name compare:[element name]];
}
NSDictionary:(關鍵字和定義的組合)
NSDictionary 通常在給定一個關鍵字(通常是一個NSString 字符串)下存儲一個數值(可以是任何類 型的對象)。然后你可以使用這個關鍵字查找相應的數值。
使用dictionaryWithObjectsAndKeys :來創建字典
+ (id)dictionaryWithObjectsAndKeys :( id)firstObject , . . .
例如:
Tire *t1 = [Tire new];
NSDictionary *tires = [ NSDictionary dictionaryWithObjectsAndKeys :t1,@"front-left",nil];
使用方法objectForKey :來獲取字典中的值
- (id)objectForKey :( id)akey;
查找輪胎可以這樣:
Tire *tire = [tires objectForkey : @"front-left"];
創建新的NSMutableDictionary 對象,向類NSMutableDictionary 發送dictionary 消息。也可以使用 dictionaryWithCapacity : 方法來創建新的可變字典
+ (id)dictionaryWithCapacity :(unsigned int)numItems ;
可以使用方法setObject :forKey :方法給字典添加元素
setObject : forKey :( id)aKey
下面是另一種使用發送dictionary 消息來創建字典的方法:
NSMutableDictionary *tires;
tires = [NSMutableDictionary dictionary] ;
[tires setObject :t1 forKey :@"front-left"];
. . .
注:若對字典中已有的關鍵字使用setObject :forKey :方法,則用新的替換
可以使用removeObjectForKey : 方法來刪除可變字典中的一個關鍵字
- (void)removeObjectForKey :(id)aKey ;
注:不要去創建NSString、NSArray 或NSDictionary 的子類,實在要的話可以用復合的方式來解決問題。
使用這種方法枚舉詞典:
for(NSString *key in g)
{
. . .
}
集合對象:
Set 是一組單值對象的集合,有可變和不可變,操作包括:搜索、添加、刪除集合中的成員(僅用于可變集合)、比較兩個集合,計算兩個集合的交集和并集等。
#import <Foundation/NSSet.h>
常用的NSSet 方法
方法 | 說明 |
+(id)setWithObjects:obj1,obj2,...,nil | 使用一列對象創建新集合 |
-(id)initWithObjects:obj1,obj2,...,nil | 使用一列對象初始化新分配的集合 |
-(NSUInteger)count | 返回集合的成員個數 |
-(BOOL)containsObject:obj | 確定集合是否包含obj |
-(BOOL)member:obj | 使用isEqual:方法確定集合是否包含obj |
-(NSEnumerator *)objectEnumerator | 為集合中的所有對象返回一個NSEnumerator 對象
|
-(BOOL)isSubsetOfSet:nsset | 確定receiver 的每個成員是否都出現在nsset 中 |
-(BOOL)intersectsSet:nsset | 確定是否receiver 中至少一個成員出現在對象nsset 中 |
-(BOOL)isEqualToSet: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 | 將接受者中的所有不屬于nsset 的元素刪除 |
新聞熱點
疑難解答