Bài 7: Các Đối tượng cơ bản trong Objective-C
On 10/01/2017 by iThanhCác Đối tượng cơ bản trong Objective-C
Trước khi tiến hành, bạn phải nhớ một quy ước:
– Khi nhắc đến thứ tự, thì thứ tự của vị trí đầu tiên được tính là 0 (bắt đầu từ 0)
– Khi nhắc đến số lượng thì số lượng đầu tiên được tính là 1 (bắt đầu từ 1)
1. NSString:
Như các bạn biết, String là chuỗi (trong các ngôn ngữ lập trình).
Vậy NSString là gì? Là một đối tượng. Khi tạo một biến với đối tượng này, ta sẽ có nơi lưu trữ chuỗi cần thiết và không giới hạn về độ dài của chuỗi mà bạn lưu vào biến đó.
Cách khai báo:
NSString *Chuoi1;
Khai báo biến có tên là Chuoi1
NSString *Chuoi2 = [NSString stringWithFormat:@"Day la chuoi 1"];
Khai báo biến có tên là Chuoi2 và gán giá trị “Đây là chuỗi 1” vào biến vừa tạo
NSString *Chuoi3 = [NSString stringWithString:Chuoi2];
Khai báo biến có tên là Chuoi3 và gán giá trị của Chuoi2 cho Chuoi3 vừa tạo
Các hàm xử lý chuỗi đối với NSString:
– length: lấy độ dài của chuỗi
NSLog(@"%ld", [Chuoi2 length]);
– characterAtIndex: Lấy ra kỹ tự ở vị trí chỉ định
NSLog(@"%c", [Chuoi2 characterAtIndex:5]);
– componentsSeparatedByString: Cắt chuỗi thành nhiều phần
NSLog(@"%@", [Chuoi2 componentsSeparatedByString:@"la"]);
– substringFromIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến cuối chuỗi
NSLog(@"%@", [Chuoi2 substringFromIndex:3]);
– substringToIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến đầu chuỗi
NSLog(@"%@", [Chuoi2 substringToIndex:3]);
– rangeOfString: Tìm xem một chuỗi nào có có tồn tại trong chuỗi cho trước hay không
NSLog(@"%lu", [Chuoi2 rangeOfString:@"chuoi"].location);
– stringByReplacingOccurrencesOfString:withString: Thay thế một chuỗi bằng một chuỗi mới trong chuỗi cho trước
NSLog(@"%@", [Chuoi2 stringByReplacingOccurrencesOfString:@"1" withString:@"da bi thay the"]);
– compare: So sánh hai chuỗi với nhau
NSLog(@"%ld", [Chuoi2 compare:@"Day la chuoi 3"]);
0 nghĩa là 2 chuỗi giống nhau, -1 nghĩa là hai chuỗi khác nhau
– intValue: Lấy số nguyên ra từ chuỗi.
NSLog(@"%i", [Chuoi2 intValue]);
2. NSMutableString
MutableString cũng tương tự như String, nhưng MutableString thì có thể chỉnh sửa được đến từng ký tự bên trong chuỗi.
Còn String chỉ có thể gán, thay thế toàn bộ giá trị trong đó,… Tí nữa, khi nhìn một số hàm khác, bạn sẽ hiểu.
Hiểu nôm na là String thì khả năng thay thế, xử lý chuỗi hạn chế hơn MutableString.
Và từ nay về sau, khi một đối tượng nào có tính “Mutable” (ví dụ: MutableString, MutableArray, MutableDictionary, …) thì bạn sẽ hiểu là tính thay thế, chỉnh sửa giá trị sẽ dễ dàng, thuận tiện. Và ngoài ra còn gọi đó là tính “động” của giá trị.
Cách khai báo:
NSMutableString *ChuoiDong1;
NSMutableString *ChuoiDong2 = [[NSMutableString alloc] init];
NSMutableString *ChuoiDong3 = [NSMutableString stringWithString:Chuoi2];
Các bạn cũng khai báo hoàn toàn giống với String tĩnh.
Có điều, nếu muốn một MutableString hoạt động, bạn cần gán vùng nhớ cho nó bằng cách init (dòng 2) hoặc gán ngay vào đó một chuỗi bất kỳ, hoặc một chuỗi không có ký tự (@””)
Các hàm xử lý chuỗi với MutableString:
Hoàn toàn giống với String, MutableString kế thừa toàn bộ những hàm mà String có.
Ngoài ra còn thêm một số hàm mà bạn cần quan tâm như sau:
– appendFormat: Ghép thêm một chuỗi với các định dạng thêm vào cuối chuỗi đã cho
[ChuoiDong3 appendFormat:@" - abc - "];
NSLog(@"%@", ChuoiDong3);
– appendString: Ghép thêm một chuỗi bất kỳ vào cuối chuỗi đã cho
[ChuoiDong3 appendString:Chuoi2];
NSLog(@"%@", ChuoiDong3);
– deleteCharactersInRange: Xoá ký tự bất kỳ trong chuỗi với vị trí được chỉ định
[ChuoiDong3 deleteCharactersInRange:NSMakeRange(2, 3)];
NSLog(@"%@", ChuoiDong3);
– insertString:atIndex: Chèn thêm chuỗi vào vị trí được chỉ định
[ChuoiDong3 insertString:@"INSERT" atIndex:3];
NSLog(@"%@", ChuoiDong3);
– replaceCharactersInRange:withString: Thay thế ký tự ở vị trí chỉ định với một chuỗi bất kỳ
[ChuoiDong3 replaceCharactersInRange:NSMakeRange(1, 2) withString:@"-REPLACE-"];
NSLog(@"%@", ChuoiDong3);
3. NSArray
Đây là mảng.
Mảng là tập hợp nhiều giá trị với nhau có cùng hoặc khác kiểu (tuỳ theo mục đích sử dụng).
Bạn có thể đọc thêm về mảng ở đây: http://vi.wikipedia.org/wiki/Mảng_(tin_học)
Cách khai báo:
NSArray *Mang1;
NSArray *Mang2 = [NSArray arrayWithObjects:@"ky tu", 3, 5.6, nil];
NSArray *Mang3 = [NSArray arrayWithObjects:@"abc", @"def", nil];
NSArray *Mang4 = [NSArray arrayWithArray:Mang2];
Các hàm xử lý, thao tác với mảng:
– containsObject: Kiểm tra xem trong mảng phần tử nào đó hay không
[Mang2 containsObject:@"ky tu"] ? NSLog(@"Co") : NSLog(@"khong");
– count: Đếm số phần tử trong mảng
NSLog(@"%ld", [Mang2 count]);
– lastObject: Lấy ra phần tử cuối cùng
NSLog(@"%@", [Mang2 lastObject]);
– objectAtIndex: Lấy ra pần tử ở thứ tự chỉ định
NSLog(@"%@", [Mang2 objectAtIndex:0]);
Thứ tự thứ 0 là phần tử đầu tiên trong mảng.– objectsAtIndexes: Lấy ra các ký tự ở các vị trí chỉ định
NSArray *MangCon = [Mang2 objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
Lấy các phần tử từ thứ tự thứ 1 trở đi và lấy 3 phần tử.
– indexOfObject: Tìm vị trí của phần tử trong mảng
NSLog(@"%ld", [Mang2 indexOfObject:@"ky tu"]);
Sau mỗi hàm, các bạn muốn biết cụ thể về các phần tử trong mảng, bạn có thể dùng đoạn code bên dưới để xem.
for (int i = 0; i < [Mang2 count]; i++) {
NSLog(@"%@", [Mang2 objectAtIndex:i]);
}
4. NSMutableArray
Thông qua MutableString, bạn sẽ hiểu ngay MutableArray sẽ tạo ra một biến mà các phần tử trong mảng đó có thể thay đổi (thay thế, xoá, thêm vào, …).
Cách khai báo:
NSMutableArray *MangDong1;
NSMutableArray *MangDong2 = [[NSMutableArray alloc] init];
NSMutableArray *MangDong3 = [NSMutableArray arrayWithObjects:@"So 1", @"So 2", nil];
NSMutableArray *MangDong4 = [NSMutableArray arrayWithArray:Mang2];
Các hàm thao tác với mảng “Mutable”:
Ngoài các hàm được kế thừa từ Array, bạn có thêm các mảng sau để xử lý mảng động:
– addObject: Thêm một phần tử vào cuối mảng
[MangDong3 addObject:@"Love"];
– addObjectsFromArray: Thêm nhiều phần tử từ 1 mảng bên ngoài vào
[MangDong3 addObjectsFromArray:Mang2];
– insertObject:atIndex: Chèn một phần tử vào mảng với vị trí chỉ định
[MangDong3 addObjectsFromArray:Mang2];
– insertObjects:atIndexes: Chèn nhiều phần tử vào mảng với các vị trí chỉ định
[MangDong3 insertObjects:Mang2 atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(3, 2)]];
– removeLastObject: Xoá phần tử cuối cùng
[MangDong3 removeLastObject];
– removeObject: Xoá phần tử được chỉ định
[MangDong3 removeObject:@"Love"];
– removeObjectAtIndex: Xoá phần tử ở vị trí nào đó
[MangDong3 removeObjectAtIndex:3];
– replaceObjectAtIndex:withObject: Thay thế phàn tử ở vị trí chỉ định với một phần tử khác
[MangDong3 replaceObjectAtIndex:1 withObject:@"THAY THE"];
– removeAllObjects: Xoá toàn bộ các phần tử trong mảng
[MangDong3 removeAllObjects];
5. Bài tập:
1. Cho chuỗi “Cộng hoà xã hội chủ nghĩa Việt Nam”.
Với 3 hàm bất kỳ, hãy đưa ra 3 cách để lấy chuỗi “xã hội” ra khỏi chuỗi cho trước.
2. Cho mảng có 3 phần tử: 4, 5, 6.
Hãy sắp xếp các số trong mảng theo thứ tự tăng dần.
Và sắp xếp các số trong mảng theo thứ tự giảm dần.
Hai bài tập nhẹ nhàng như vậy. Các bạn giải xong thì đăng lên đây để mọi người cùng theo dõi nhé.
Link Project để các bạn tham khảo: http://www.mediafire.com/download/3ah8w2chuf1tylb/Bai_7.zip
Cảm ơn các bạn quan tâm.