Liệt kê nhanh Objective-C
Liệt kê nhanh là một tính năng của Objective-C giúp liệt kê thông qua một tập hợp. Vì vậy, để biết về cách liệt kê nhanh, trước tiên chúng ta cần biết về tập hợp sẽ được giải thích ở phần sau.
Bộ sưu tập trong Objective-C
Bộ sưu tập là cấu trúc cơ bản. Nó được sử dụng để giữ và quản lý các đối tượng khác. Toàn bộ mục đích của bộ sưu tập là nó cung cấp một cách chung để lưu trữ và truy xuất các đối tượng một cách hiệu quả.
Có một số loại bộ sưu tập khác nhau. Trong khi tất cả chúng đều thực hiện cùng một mục đích là có thể giữ các đối tượng khác, chúng chủ yếu khác nhau ở cách các đối tượng được lấy ra. Các bộ sưu tập phổ biến nhất được sử dụng trong Objective-C là:
- NSSet
- NSArray
- NSDictionary
- NSMutableSet
- NSMutableArray
- NSMutableDictionary
Nếu bạn muốn biết thêm về các cấu trúc này, vui lòng tham khảo lưu trữ dữ liệu trong Foundation Framework .
Cú pháp liệt kê nhanh
for (classType variable in collectionObject ) {
statements
}
Đây là một ví dụ để liệt kê nhanh.
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [[NSArray alloc]
initWithObjects:@"string1", @"string2",@"string3",nil];
for(NSString *aString in array) {
NSLog(@"Value: %@",aString);
}
[pool drain];
return 0;
}
Bây giờ khi chúng ta biên dịch và chạy chương trình, chúng ta sẽ nhận được kết quả như sau.
2013-09-28 06:26:22.835 demo[7426] Value: string1
2013-09-28 06:26:22.836 demo[7426] Value: string2
2013-09-28 06:26:22.836 demo[7426] Value: string3
Như bạn có thể thấy trong đầu ra, mỗi đối tượng trong mảng được in theo một thứ tự.
Lùi lại nhanh chóng
for (classType variable in [collectionObject reverseObjectEnumerator] ) {
statements
}
Đây là một ví dụ cho reverseObjectEnumerator trong cách liệt kê nhanh.
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [[NSArray alloc]
initWithObjects:@"string1", @"string2",@"string3",nil];
for(NSString *aString in [array reverseObjectEnumerator]) {
NSLog(@"Value: %@",aString);
}
[pool drain];
return 0;
}
Bây giờ khi chúng ta biên dịch và chạy chương trình, chúng ta sẽ nhận được kết quả như sau.
2013-09-28 06:27:51.025 demo[12742] Value: string3
2013-09-28 06:27:51.025 demo[12742] Value: string2
2013-09-28 06:27:51.025 demo[12742] Value: string1
Như bạn có thể thấy trong đầu ra, mỗi đối tượng trong mảng được in nhưng theo thứ tự ngược lại so với kiểu liệt kê nhanh bình thường.