Objective-C學習篇09—NSNumber與笑笑文法,objectivecnsnumber
NSNumber 由於數組,字典,集這三個容器中只能存放物件類型的資料,如果想把基礎資料型別 (Elementary Data Type)的資料存放到這三個容器中,需要把基礎資料型別 (Elementary Data Type)轉化為物件類型,此時就要藉助於NSNumber 這個類. NSNumber 繼承自NSValue, 數字類,主要的作用是將基礎資料型別 (Elementary Data Type)轉換為NSNumber物件類型,也能將物件類型轉換為基礎資料型別 (Elementary Data Type)
整型
int a = 100;建立NSnumber對象 numberWithInt:NSNumber *intNumber = [NSNumber numberWithInt:a]; 即實現了將基礎資料型別 (Elementary Data Type)轉化為物件類型NSLog(@"intNumber = %@", intNumber);反之,將物件類型轉換為基礎資料型別 (Elementary Data Type) .intValueint b = intNumber.intValue; // 屬性,相當於 [intNumber intvalue];NSLog(@"b = %d", b);
2015-12-04 13:06:17.252 OCNSNumber[1659:136457] intNumber = 100
2015-12-04 13:06:17.253 OCNSNumber[1659:136457] b = 100
浮點型
float c = 3.14; NSNumber *floatNumber = [NSNumber numberWithFloat:c]; numberWithFloat: NSLog(@"floatNumber = %@", floatNumber); float d = floatNumber.floatValue; floatValue NSLog(@"d = %.2f", d);
字元型
char e = 'a'; 字元類型的轉化為數字對象 numberWithChar: NSNumber *charNumber = [NSNumber numberWithChar:e]; NSLog(@"charNumber = %@", charNumber);
char f = charNumber.charValue; .charValue
NSLog(@"f = %c", f);
短整型
short g = 10; NSNumber *shortNumber = [NSNumber numberWithLong:g]; numberWithLong: NSLog(@"shortNumber = %@", shortNumber); short h = shortNumber.shortValue; .shortValue NSLog(@"h = %d", h);
小練習
// int n1 = 10, n2 = 22, n3 = 18, n4 = 15; 要求:將上面四個變數放到數組對象中,然後排序 // 轉化為物件類型 NSNumber *m1 = [NSNumber numberWithInt:n1]; NSNumber *m2 = [NSNumber numberWithInt:n2]; NSNumber *m3 = [NSNumber numberWithInt:n3]; NSNumber *m4 = [NSNumber numberWithInt:n4]; // 裝進數組對象中 NSArray *array = [NSArray arrayWithObjects:m1, m2, m3, m4, nil]; // 對數組對象中的元素進行排序 NSArray *sortArray = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@", sortArray);
2015-12-04 13:15:23.908 OCNSNumber[1667:140688] (
10,
15,
18,
22
)
總結: 基礎資料型別 (Elementary Data Type)轉化為對象: 使用 [NSNumber numberWith+基礎資料型別 (Elementary Data Type)的類型名];反之,將物件類型轉化為基礎資料型別 (Elementary Data Type): 基礎資料型別 (Elementary Data Type)+Value;
笑笑文法
下面是關於一些笑笑文法的使用
笑笑文法,也就是字面量,是一種簡潔表示資料的方式
1.對象資料類型的資料表示可以直接使用 @
比如: 拿100 來講,一般的做法是:
NSNumber *number = [NSNumber numberWithInt:100];
NSLog(@"%@", number);
使用笑笑文法可以這樣列印對象
NSLog(@"%@", @100);
2. 不可變數組的笑笑文法 使用 @[ ] 中括弧中放對象
NSArray *nameArray2 = @[@"zhangSan", @"liSi", @"wangEr"];
NSLog(@"%@", nameArray2);
3. 可變數組笑笑文法 @[].mutableCopy;
NSMutableArray *mArray2 = @[@"1", @"2", @"3"].mutableCopy; // 可變的都加 .mutableCopy
NSLog(@"%@", mArray2);
4. 使用笑笑文法直接通過數組名加下標進行賦值
mArray2[0] = @100;
NSLog(@"%@", mArray2);
/*
2015-12-04 13:27:55.632 OCNSNumber[1690:146656] (
100,
2,
3
)
*/
5. 字典的笑笑文法
通常
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoZe", @"1", @"kunLing", @"2", @"sunLi", @"3", nil];
NSLog(@"%@", dic);
笑笑文法 @{ 鍵:值,... };
NSDictionary *dic2 = @{@"1":@"xiaoZe", @"2":@"kunLing", @"3":@"sunLi"};
NSLog(@"%@", dic2);
6. 可變字典(只有可變才能修改) @{鍵:值,...}.mutableCopy
NSMutableDictionary *mDic = @{@"1":@"a", @"2":@"b", @"3":@"c"}.mutableCopy;
NSLog(@"%@", mDic);
[mDic setObject:@"A" forKey:@"1"];
NSLog(@"%@", mDic);
7. 修改key值對應的value值
mDic[@"2"] = @"L";
NSLog(@"%@", mDic);
NSString *value = [mDic objectForKey:@"2"];
NSLog(@"%@", value);
8.取出key值對應的value
NSLog(@"%@", mDic[@"3"]);
本節列印結果:
2015-12-04 13:31:10.137 OCNSNumber[1700:148140] intNumber = 100
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] b = 100
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] floatNumber = 3.14
2015-12-04 13:31:10.138 OCNSNumber[1700:148140] d = 3.14
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] charNumber = 97
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] f = a
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] shortNumber = 10
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] h = 10
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] (
10,
15,
18,
22
)
2015-12-04 13:31:10.139 OCNSNumber[1700:148140] 100
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] 100
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
zhangSan,
liSi,
wangEr
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
1,
2,
3
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] (
100,
2,
3
)
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = xiaoZe;
2 = kunLing;
3 = sunLi;
}
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = xiaoZe;
2 = kunLing;
3 = sunLi;
}
2015-12-04 13:31:10.140 OCNSNumber[1700:148140] {
1 = a;
2 = b;
3 = c;
}
2015-12-04 13:31:10.141 OCNSNumber[1700:148140] {
1 = A;
2 = b;
3 = c;
}
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] {
1 = A;
2 = L;
3 = c;
}
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] L
2015-12-04 13:31:10.155 OCNSNumber[1700:148140] c