住院好幾天了。昨天剛安上無線網卡,寫了半天筆記結果破輸入法死機白忙活了,還得重搞。 數組
NSArray 是Cocoa的一個類,用於存放對象,這個類不能夠直接存放C中數據類型的數據,須要轉換成Object-C的對象才能夠。 調試
建立一個NSArray對象的方法有不少,這裏先說一個比較簡單的方法。 code
+ (NSArray) arrayWithObjects:(id) obj, ...count 用於獲取NSArray中的對象個數
-(unsigned int) count;objectAtIndex 用於根據索引獲取相應的對象,注意若是訪問了不存在的索引,不會像PHP同樣最多出現個Notice,將會致使程序崩潰,其實這是個好事,由於他會讓你及時的修正,避免因爲使用非法索引而致使出現難以調試的Bug。
- (id) objectAtIndex:(unsigned int)index;
componentsJoinedByString 這個跟PHP中的implode相似,用於根據一個字符串來將數組鏈接成一個新的字符串。 component
- (NSString *) componentsJoinedByString:(NSString *)dec;componentsSeparatedByString 這個跟PHP中的explode相似,用於根據一個字符串來拆分另一個字符串,並將拆分後的結果存放在NSArray中。
- (NSArray *) componentsSeparatedByString:(NSString *)dec;
NSMuTableArray 跟NSString同樣NSArray也是不可變對象,一旦建立後不能夠進行增刪操做,須要NSMuTableArray 來操做 對象
NSMuTableArray 的建立方式也很簡單 索引
+(id) arrayWithCapacity:(unsigned int)numItems;addObjects 用於在數組結尾增長新的對象
+ (void) addObject:(id) anObject;removeObjectAtIndex 根據索引刪除數組中的對象
- (void) removeObjectAtIndex:(unsigned int) index;
以上是數組的簡單操做,這裏介紹下幾種簡單的遍歷方式。 ci
第一種 使用for循環加 count 方法遍歷 rem
int i = 0; for(i = 0; i < [array count]; i++) { [array objectAtIndex:i] }第二種 使用for in方式遍歷
for(NSString *str in array) { 操做 }第三種 使用枚舉方式遍歷
NSEnumerator *enumer; emumer = [array objectEnumerator]; NSString *str; while(str = [enumer nextObject]) { 操做 }要注意的是 使用這種方式遍歷 遍歷過程當中不能夠對數組進行增刪操做 不然將會出現一些未知的錯誤
NSDictionary Object-C 容許你經過這個類來定義字典數據。 字符串
+ (id) dictionaryWithObjectsAndKeys: (id) firstObject,...;
NSDictionary *dicts; dicts = [NSDictionary dictionaryWithObjectsAndKeys: nameObj, @"name", oldObj, @"old", sexOBj, @"sex" ];objectForKey 根據字典的key來獲取對象
- (id) objectForKey: (id) akey;
使用NSMuTableDictionary 來處理建立一個動態的字典 get
+ (id) dictionaryWithCapacity: (unsigned int)numItems;setObject 用於對字典添加一條Key值,若是key存在則覆蓋
-(void) setObject:(id) anObject forKey:(id) aKey;removeObjectForKey 刪除字典中的一個key值
- (void) removeObjectForKey:(id) akey;
像以前說的同樣,NSArray和NSDictionary都只能存儲對象,C類型的數據是沒法直接存儲的,因此若是須要存儲這些數據的話必需要轉換成對象後才能夠,下面介紹一些轉換方法。
NSNumber類封裝了一些方法用於將一些數值類型轉換成對象。
+(NSNumber *) numberWithChar:(char) value; +(NSNumber *) numberWithInt:(int) value; +(NSNumber *) numberWithFloat:(float) value; +(NSNumber *) numberWithBool:(BOOL) value;從對象中獲取這些數據的值也很簡單
- (int) intValue; - (char) charValue; - (float) floatValue; - (BOOL) boolValue; - (NSString *) stringValue;
NSValue
NSNumber 就是 NSValue的一個子類,使用NSValue能夠包裝任意類型的數據,使其能夠放在數組或者字典中。
+ (NSValue *) valueWithBytes: (const void *)value objCtype: (const char *)type;第一個參數使要包裝的數據地址,使用C的取址符獲取,第二個參數用於描述改數據的字符串,主要描述了數據類型和大小。使用@encode可使用指令獲取,例如 @encode(NSRect)。
getValue 使用getValue方法能夠獲取NSValue的實際值
- (void *) getValue: (void *)value;返回的數據將存放在第一個參數所指的地址中。
Cocoa還提供了一些比較便捷的方法用於處理經常使用的結構
+ (NSValue *) valueWithPoint: (NSPoint) point; + (NSValue *) valueWithSize: (NSSize) size; + (NSValue *) valueWithRect: (NSRect) rect; - (NSPoint) pointValue; - (NSSize) sizeValue; - (NSRect) rectValue;
NSNull 這個數據類型用於表示一個 爲空的數據(nil) 相似PHP的 NULL,表示什麼都沒有,使用null方法能夠建立這個對象。
+ (NSNull *)null;NSNull的值老是同樣的 因此 能夠直接用 == 進行比較。