一、一些有用的數據類型
NSRange範圍
typedef struct
}NSRange;
unsigned int是C語言中的int類型
location用來存放字段範圍的起始位置,length是該範圍內所含元素的個數
字符串”Objective-C is a cool language”中cool的location爲17,length爲4
三種賦值方式:
(1)
NSRange range;
range.location = 17;
range.length = 4;
(2)
NSRange range = {17,4};
(3)
NSRange range = NSMakeRange(17,4);
可以在方法調用中傳遞參數
[anObject
幾何數據類型
NSPoint笛卡兒平面中的座標點(x,y)
typedef struct _NSPoint{
}NSPoint;
快捷函數:NSMakePoint()
NSSize用來存儲長度和寬度
typedef
}NSSize;
快捷函數:NSMakeSize()
NSRect矩形數據類型
typedef
}NSRect;
快捷函數:NSMakeRect();
二、字符串NSString類
NSString類,其字符串以@開頭,例@”Hello World”
格式化字符串
stringWithFormat方法
+(id) stringWithFormat(NSString *)format,….
最後的….表示這個方法可以接收多個逗號隔開的其他參數
+(id)表示這個方法屬於類對象不屬於類的實例對象,類方法可以訪問全局數據
(-)聲明的方法是實例方法,在實例對象中運行
例:NSString *height;
字符串長度
length方法
-(unsigned
例
unsigned int length = [height length];
在表達式中使用
if([height length] > 35){
}
字符串比較方法
isEqualToString方法可以用來比較接收方(接收消息的對象)和當做參數傳遞來的字符串,返回BOOL值
例:
NSString *thing1 = @”hello”;
NSString *thing2 = @”hello”;
if([thing1 isEqualToString: thing2]){
}
compare方法,將接收對象和傳遞來的字符串逐個字符進行比較,返回一個NSComparisonResult(枚舉型數據),是區分大小寫的比較
typedef
} NSComparisonResult;
例:[@”aardvark”
[@”zoinks”
不區分大小寫的參數
-(NSComparisonResult)
options參數是一個位掩碼,可以使用位或|來添加選項標記
例:
if([thing1 compare :thing2 option : NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame)
{
}
字符串檢索
-(BOOL)hasPrefix:(NSString *) aString;
-(BOOL)hasSuffix:(NSString *) aString;
例子:if([filename hasPrefix: @”draft”])
字符串某處包含其他字符串
-(NSRange) rangeOfString : (NSString *)aString;
例:NSRange range = [fileName rangeOfString : @"chapter"];
找到了range.start和length爲數字,沒找到start爲NSNotFound
可變性的字符串
NSMutableString
NSString是不可變的字符串,NSMutableString是NSString的子類可以改變字符串的長度
使用類方法stringWithCapacity創建或stringWithFormat –因爲繼承的關係NSString中的類也可調用
+(id)stringWithCapacity:(unsigned) capacity;
例:NSMutableString *string;
附加新字符串appendString或appendFormat
-(void) appendString: (NSString *) aString;
-(void) appendFormat: (NSString *) format, ….;
刪除字符串中的字符deleteCharactersInRange
例:創建朋友列表
NSMutableString *friends;
三、集合
NSArray不可變數組
NSArray可以存入任意類型的對象,通過索引訪問對象
構造方法+(id)arrayWithObjects:object, …. , nil;
結尾處必須加nil已表示賦值結束
例子:
獲取數組對象個數
-(unsigned) count;
獲取特定索引處的對象
-(id) objectAtIndex: (unsigned int) index;
例子:二者結合用於循環
}
切分數組
-componentsSeparatedByStr
例子:
用componentsJoinedByString
NSMutableArray可變數組
可以任意添加和刪除數組中的對象
構造方法:
+(id) arrayWithCapacity : (unsigned) numitems;
例:
NSMutableArray *array;
array = [NSMutableArray
使用addObject在數組末尾添加對象:
-(void) addObject : (id) anObject;
例:
for(i = 0; i < 4 ; i++){
}
使用removeObjectAtIndex刪除對象:
-(void) removeObjectAtIndex : (unsigned) index;
例:[array
四、枚舉
NSEnumerator使用枚舉來迭代運算集合
通過objectEnumerator從前向後遍歷集合
通過reverseObjectEnumerator從後向前遍歷集合
-(NSEnumerator *) objectEnumerator;
-(NSEnumerator *) reverseObjectEnumerator;
利用while循環向枚舉器請求nextObject對象(下一個對象):
-(id) nextObject;
當nextObject返回nil時循環結束
舉例代碼:
Tip:對可變數組操作時不能通過添加或刪除對象來改變數組容器,否則程序會崩潰
快速枚舉
在Mac OS X 10.5 Leopard 中添加了此方法,之前版本無法使用
循環會遍歷數組中的每個元素,並用指定的變量存儲每個數組對象
例:
NSDictionary不可變字典集合
鍵值對集合,不可變集合,在創建時就要提交全部的對象和關鍵字
字典集合對於頻繁查詢和大型數據集來說要比其他數組高效的多,他直接通過鍵查詢而無需遍歷集合
構造函數+(id) dictionaryWithObjectsAnd
此方法接受對象和關鍵字交替存儲的序列,以nil值作爲終止符,不能在集合中添加nil值
舉例代碼:
使用方法objectForkey來獲取字典中的值,向方法傳遞對應值的關鍵字
-(id) objectForKey : (id) akey;
舉例代碼:
如果沒有找到會返回nil值
NSMutableDictionary可變字典集合
構造函數+(Id) dictionaryWithCapacity : (unsigned int) numitems;
長度只是建議無限制
也可使用dictionary
使用setObject : forKey方法給字典添加元素
-(void) setObject : (id) anObject forKey : (id) aKey;
舉例代碼:
如果已經有了該對象則修改該對象
使用removeObjectForKey方法刪除關鍵字和對象
-(void)removeObjectForKey : (id) akey;
舉例代碼:
五、各種基本數據類
因爲NSArray和NSDictionary只能存儲對象,所以Objective-C提供了將基礎數據類型封裝爲對象的類
NSNumber類包裝基本數據類型
使用下列類方法創建新的NSNumber對象
+(NSNumber
+(NSNumber
+(NSNumber
+(NSNumber
還有很多其他數據類型的方法,行駛大同小異
調用封裝到NSNumber中的數據
-(char) charValue;
-(int) intValue;
-(float)floatValue;
-(BOOL) boolValue;
-(NSString
etc
Tip:高精度數據可以被低精度數據提取方法提取出來,NSNumber會對數據進行適當轉換
NSValue可以包含任何值
NSValue是NSNumber的超類
NSValue可以放入NSArray和NSDictionary中
構造函數:+(NSValue
舉例代碼:
使用方法getValue來提取數值:需提供數值變量的地址,即&對象名
-(void) getValue : (void *) value;
舉例代碼:
Tip:還記得嗎,get開頭的方法返回的是一個指針
Cocoa提供了將常用struct型數據轉換爲NSValue的方法:
+(NSValue
+(NSValue
+(NSValue
-(NSPoint) pointValue;
-(NSSize) sizeValue;
-(NSRect) rectValue;
舉例代碼:在NSArray中存儲和檢索NSRect
NSNull空值對象
因爲nil在集合中有特殊含義所以創造出來這個類來代替nil
獲得一個NSNull空值方法+(NSNull
舉例代碼:
(1)判斷是否爲空
(2)將空添加到集合中