2009-09-25 40 views
52

Để hiển thị khóa/giá trị từ một NSMutableDictionary tuần tự (trong bảng xem trước), tôi cần truy cập chúng theo chỉ mục. Nếu truy cập bằng chỉ mục có thể cung cấp khóa ở chỉ mục đó, tôi có thể nhận được giá trị. Có cách nào để làm điều đó hay một kỹ thuật khác không?Truy cập các đối tượng trong NSMutableDictionary theo chỉ mục

+0

Khi thực hiện như sau: NSMutableDictionary * tmpDict = [[NSMutableDictionary alloc] init]; [tmpDict setObject: @ "CN-GSM" forKey: @ "Nhà cung cấp:"]; [tmpDict setObject: @ "10010" forKey: @ "Số:"]; [tmpDict setObject: @ "Có" forKey: @ "Miễn phí:"]; NSLog (@ "% @", [tmpdict allKeys]); [tmpDict release]; Tại sao đầu ra không được sắp xếp theo giá trị tôi đã thêm vào tmpDict? – ZYiOS

Trả lời

119

Bạn có thể lấy NSArray chứa các khóa của đối tượng bằng cách sử dụng phương thức allKeys. Sau đó, bạn có thể xem xét điều đó theo chỉ mục. Lưu ý rằng thứ tự các khóa xuất hiện trong mảng không xác định. Ví dụ:

NSMutableDictionary *dict; 

/* Create the dictionary. */ 

NSArray *keys = [dict allKeys]; 
id aKey = [keys objectAtIndex:0]; 
id anObject = [dict objectForKey:aKey]; 

EDIT: Trên thực tế, nếu tôi hiểu những gì bạn đang cố gắng làm những gì bạn muốn có thể dễ dàng thực hiện bằng liệt kê nhanh, ví dụ:

NSMutableDictionary *dict; 

/* Put stuff in dictionary. */ 

for (id key in dict) { 
    id anObject = [dict objectForKey:key]; 
    /* Do something with anObject. */ 
} 

EDIT: Fixed lỗi đánh máy đã chỉ ra bởi Marco.

+2

"allkeys" là "allKeys" – Mark

+0

Trong 'cellForRowAtIndexPath' trong một khung nhìn có thể là: 'NSArray * keys = [colors allKeys]; NSString * key = [đối tượng khóaAtIndex: indexPath.row]; cell = [tv dequeueReusableCellWithIdentifier: @ "CellColour" forIndexPath: indexPath]; cell.textLabel.text = [colors objectForKey: key]; cell.backgroundColor = [self colorFromHexString: key]; ' –

9

bạn có thể lấy một dãy tất cả các phím bằng phương pháp allKeys của từ điển; và sau đó bạn có thể truy cập mảng theo chỉ mục. tuy nhiên, bản thân từ điển không có thứ tự vốn có, do đó thứ tự của các phím bạn nhận được trước và sau khi thay đổi từ điển có thể hoàn toàn khác nhau

Các vấn đề liên quan