Tôi hiện đang liệt kê thông qua các thành phần NSMutableArray
(hoặc NSMutableSet
) để tìm các bản sao và xóa chúng. Ví dụ: nếu mảng/bộ có giá trị [@"a", @"b", @"b", @"c"]
thì kết quả cuối cùng phải là [@"a", @"b", @"c"]
.Tạo NSMutableArray hoặc NSMutableSet độc đáo
Vì tôi đang so sánh NSStrings
, tôi đang sử dụng phương pháp isEqualTo:
để kiểm tra xem các chuỗi có bằng nhau hay không.
Có cách nào hiệu quả hơn để xóa các mục nhập trùng lặp thay vì lặp qua tất cả các mục nhập và kiểm tra xem có trùng lặp không?
Cảm ơn bạn, đã làm việc! Tôi đã làm điều này để lấy các phần tử duy nhất trong mảng: // thêm để đặt để kiểm tra các tên phần tử duy nhất NSSet * uniqueNames = [NSSet setWithArray: names]; \t // trả về dữ liệu trở lại mảng tên = [[NSMutableArray alloc] initWithArray: [uniqueNames allObjects]]; – Rudi
Cách mang tính đại diện hơn để lấy lại tên mảng là: id name = [[uniqueNames allObjects] giữ lại]; // nếu bạn muốn giữ tên hoặc id name = [uniqueNames allObjects]; // nếu bạn không muốn giữ lại quyền sở hữu của mảng –
@BarryWark, nó sẽ không phải là O (n) cho lần lặp lại? – Peres