2013-10-17 35 views
7

Tôi có một tập hợp các giá trị int64_t mà tôi cần để tạo chỉ mục. Trước đây tôi đã sử dụng:Tạo NSRange với giá trị tối thiểu và tối đa đã cho

NSIndexSet *set = [NSIndexSet indexSetWithRange:NSMakeRange(location, length)]; 

để lập chỉ mục, nhưng lần này không rõ tôi làm cách nào để thực hiện điều này dựa trên thông tin tôi có.

Chi tiết cụ thể: Tôi có một tập hợp các giá trị. Tôi biết giá trị cao nhất trong bộ sưu tập, giá trị thấp nhất trong bộ sưu tập và số lượng giá trị trong bộ sưu tập. Tuy nhiên, các giá trị không nhất thiết phải liên tiếp.

Ví dụ: nếu tôi có các giá trị sau: 1,3,4,6,7,9, tôi muốn tạo tập hợp bao gồm tất cả các số trong bộ sưu tập giữa và bao gồm 1 và 9, tức là set = 1 -9.

Tôi làm như thế nào?

Sửa

tôi không nên nói rằng tôi có một "bộ sưu tập" các số nguyên, chứ không phải - Tôi có các đối tượng được lưu trữ trong dữ liệu cốt lõi và mỗi đối tượng có một thuộc tính int64_t liên kết với nó, vì vậy tôi không có một con trỏ đến một bộ sưu tập thực sự của các đối tượng, và tôi muốn tránh tìm nạp các đối tượng chỉ để tạo một bộ sưu tập.

+0

Vì vậy, các bộ chỉ số nên chứa các chỉ số 1,3,4,6,7,9? Hay tôi đã hiểu lầm câu hỏi của bạn? –

+0

Có, vì vậy tôi tự hỏi làm thế nào tôi sẽ tạo ra các phạm vi 1-9 để có được điều này xảy ra. – jac300

Trả lời

13

Chỉnh sửa: Khi nó bật ra trong cuộc thảo luận, câu hỏi là cách tạo phạm vi với giá trị tối thiểu và tối đa đã cho. Này được thực hiện với

NSMakeRange(min, max + 1 - min) 
+0

Xin lỗi, tôi nghĩ rằng tôi không rõ ràng trong câu hỏi của mình. Tôi vừa chỉnh sửa. – jac300

+0

Cảm ơn - Tôi nghĩ câu hỏi của tôi cơ bản hơn nhiều - tôi có giá trị tối đa và tối thiểu, tôi chỉ không thấy cách tạo phạm vi với giá trị tối thiểu và tối đa. – jac300

+1

@ user1697845: 'NSMakeRange (min, max + 1 - min)'? –

0

Chỉ cần sử dụng một NSMutableIndexSet và thêm chúng từng người một với phương pháp addIndex

0

Bạn có thể làm một cái gì đó như thế này:

NSArray *array = @[@1,@3,@4,@6,@7,@9]; 

NSMutableIndexSet *set = [[NSMutableIndexSet alloc] init]; 
for (NSNumber *value in array) { 
    [set addIndex:[value integerValue]]; 
} 
Các vấn đề liên quan