Tôi có một số NSArray
và phải lặp lại nó trong trường hợp đặc biệt ngược, để tôi xem xét phần tử cuối cùng. Đó là vì lý do hiệu suất: Nếu cái cuối cùng không có ý nghĩa gì, tất cả những cái trước đó có thể bỏ qua. Vì vậy, tôi muốn phá vỡ vòng lặp. Nhưng điều đó sẽ không hiệu quả nếu tôi lặp lại từ 0 đến n. Tôi cần phải đi từ n đến 0. Có lẽ có một phương pháp hoặc chức năng tôi không biết về, vì vậy tôi sẽ không phải tái phát minh ra bánh xe ở đây.Có cách nào dễ dàng để lặp qua một NSArray ngược?
Trả lời
Để thêm vào các câu trả lời khác, bạn có thể sử dụng -[NSArray reverseObjectEnumerator]
kết hợp với tính năng liệt kê nhanh trong Objective-C 2.0 (có sẵn trong Leopard, iPhone):
for (id someObject in [myArray reverseObjectEnumerator])
{
// print some info
NSLog([someObject description]);
}
Nguồn với một số thông tin thêm: http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html
Đây có phải là liệt kê nhanh hay không và nhanh hơn c thường xuyên cho vòng lặp bắt đầu từ '[myArray count] -1'? Làm thế nào để bạn lặp qua một 'NSString' ngược? – ma11hew28
Tôi không có bất kỳ liên kết nào ở đây ngay bây giờ nhưng có video ở đâu đó (có thể là WWDC) nơi kỹ sư của Apple giải thích cách hoạt động của liệt kê nhanh và tại sao nó nhanh. Nó hoạt động tốt hơn cả bảng liệt kê NSArray dựa trên chỉ mục và các điều tra viên nền tảng kinh điển và, tùy thuộc vào kịch bản, bởi rất nhiều. –
Tôi phải chạy ngược cho vòng lặp trên một từ điển, làm thế nào để làm như vậy? –
[NsArray reverseObjectEnumerator]
Từ here:
NSEnumerator* myIterator = [myArray reverseObjectEnumerator];
id anObject;
while(anObject = [myIterator nextObject])
{
/* do something useful with anObject */
}
Do đây là cho performace, bạn có một số tùy chọn và sẽ được tư vấn tốt để thử tất cả để xem cái nào phù hợp nhất.
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
-[NSArray reverseObjectEnumerator]
- Create a reverse copy of the array và sau đó lặp qua đó thường
- Dùng C tiêu chuẩn cho vòng lặp và bắt đầu làm việc và ngược qua mảng.
phương pháp More cực (nếu hiệu suất là siêu tới hạn)
- Đọc trên bao Cocoa thực hiện đối tượng nhanh chóng liệt kê và tạo ra tương đương của riêng bạn trong ngược lại.
- Sử dụng mảng C hoặc C++.
Có thể có những người khác. Trong trường hợp đó, bất cứ ai cảm thấy tự do để thêm nó.
Tôi sẽ nói rằng enumerateObjectsWithOptions: NSEnumerationReverse là câu trả lời hay nhất, đặc biệt nếu bạn cần biết bạn đang ở chỉ mục nào. Cảm ơn!!! –
for (int i = ((int)[array count] - 1); i > -1; i--) {
NSLog(@"element: %@",array[i]);
}
- 1. Hibernate constraint ConstraintViolationException. Có cách nào dễ dàng để bỏ qua các mục trùng lặp không?
- 2. Làm cách nào để thêm các đối tượng CGPoint vào NSArray một cách dễ dàng?
- 3. Trong C# .NET 2.0, một cách dễ dàng để làm một foreach ngược lại là gì?
- 4. Có một cách dễ dàng hơn để xử lý các mảng!
- 5. Có cách nào dễ dàng để sử dụng InternalsVisibleToAttribute?
- 6. Có cách nào dễ dàng để làm cho gcc bỏ qua crtbegin.o/crtend.o không?
- 7. Cách dễ dàng để tiếp tục đếm lên vô hạn
- 8. Cách dễ dàng để thử một dịch vụ WCF?
- 9. Cách dễ dàng để sử dụng FindControl ("")
- 10. Erlang - Interleave một cách dễ dàng
- 11. Cách dễ dàng để quay ngược mã Java 6 sang Java 5?
- 12. Có cách nào dễ dàng để biến một bảng MySQL thành một Redis tương đương?
- 13. Có cách nào dễ dàng để chuyển đổi một Boolean thành một số nguyên không?
- 14. Có cách nào dễ dàng để kiểm tra tính tương thích ngược đối với các tập lệnh PowerShell không?
- 15. Có cách nào dễ dàng hơn để yêu cầu HTTPBuilder bỏ qua một chứng chỉ không hợp lệ không?
- 16. Có cách nào dễ dàng để biến một int thành một mảng ints của mỗi chữ số?
- 17. Cách dễ dàng để áp dụng hàm cho một mảng
- 18. Có cách nào dễ dàng để tạo mã từ một tệp văn bản không?
- 19. Có cách nào dễ dàng để thêm một IList <MyType> cho người khác không?
- 20. Có cách nào dễ dàng hơn để ký một tài liệu XML trong Java không?
- 21. Làm thế nào để chuyển đổi một số nguyên thành một chuỗi một cách dễ dàng?
- 22. Tôi làm cách nào để lặp qua một phạm vi ngày ngược lại?
- 23. Cách dễ dàng để chuyển đổi mã c thành x86?
- 24. Một cách dễ dàng để phá vỡ một NSArray với hơn 4000 đối tượng trong nó thành nhiều mảng với 30 đối tượng là gì?
- 25. Có cách nào dễ dàng để chuyển đổi văn bản thành HTML trong JavaScript không?
- 26. Có một cách dễ dàng để thiết lập nullglob cho một glob
- 27. Cách dễ dàng để thoát khỏi các biến mẫu Django
- 28. cách Pythonic viết gói để dễ dàng nhập khẩu
- 29. Có cách nào dễ dàng để loại trừ các tệp mà FuzzyFinder tìm kiếm không?
- 30. Có thể vẽ một boxplot từ thống kê trước đó tính toán một cách dễ dàng
"Làm cách nào để đảo ngược NSArray trong mục tiêu-C?" là một câu hỏi hoàn toàn khác. – Nestor
Swift: http://stackoverflow.com/questions/24508592/how-to-iterate-for-loop-in-reverse-order-in-swift – Suragch