Đang cố gắng để giữ cho hai mảng đồng bộ chỉ là chuốc lấy phiền. Nó có thể được thực hiện, tất nhiên, nhưng bất cứ khi nào bạn sửa đổi một mảng, bạn phải nhớ để thực hiện một thay đổi tương ứng với khác. Làm cho bạn một ưu và tránh rằng toàn bộ lớp lỗi bằng cách suy nghĩ lại cách bạn đang lưu trữ dữ liệu.
Trong trường hợp này, bạn có cặp {person, boolean}. Một tùy chọn là lưu trữ từng cặp như một từ điển, và sau đó giữ một mảng các từ điển đó. Đây sẽ là một kế hoạch đặc biệt tốt nếu bạn có thể mở rộng số lượng dữ liệu vượt quá hai phần dữ liệu mà bạn có. Một tùy chọn khác là chỉ sử dụng từ điển trong đó các khóa là tên người và các giá trị là giá trị có/không của bạn. Điều này làm cho câu trả lời cho câu hỏi của bạn rất đơn giản:
NSString *yesOrNo = [personDictionary objectForKey:personName];
Bắt trở lại câu hỏi ban đầu của bạn, mà bạn vẫn có hai mảng, các dễ nhất điều cần làm là để lặp qua mảng người cho đến khi bạn tìm ra người mà bạn đang tìm kiếm, lấy chỉ mục của tên đó, và sau đó tra cứu giá trị tương ứng trong mảng có/không:
for (person in peopleArray) {
if ([person isEqualToString:thePersonYoureLookingFor]) {
yesNoValue = [yesNoArray objectAtIndex:[peopleArray indexOfObject:person];
break;
}
}
Sẽ ổn nếu số lượng người trong danh sách không quá lớn . Nếu danh sách có thể lớn, thì bạn sẽ muốn giữ cho mảng được sắp xếp để bạn có thể thực hiện tìm kiếm nhị phân. Mặc dù vậy, vấn đề ở đây là bạn có/không có mảng riêng biệt, do đó, sắp xếp personArray trong khi vẫn giữ mảng có/không theo đúng thứ tự trở nên phức tạp.
Bạn có sắp xếp hoặc sắp xếp các mảng tên không? –
@Bavarious Unsorted, nhưng nó được tạo ra bởi một máy chủ do đó không có bản sao. Tuy nhiên, PengOne đã trả lời câu hỏi của tôi. Tôi đang tìm phương thức indexOfObject. – Preston