2010-02-09 27 views
5

Làm cách nào để tạo một số biến số NSDictionary bằng cách sử dụng số của mảng?Tạo nhiều biến số được đánh số dựa trên int

Đây là cơ bản những gì tôi đã đưa ra, nhưng tôi không chắc chắn làm thế nào để làm cho công việc này với cú pháp Objective-C. doesntContainAnotherNSArray. Tôi muốn tên của các từ điển để sử dụng giá trị hiện tại của loopInt.

int *loopInt = 0; 
while (doesntContainAnother.count <= loopInt) { 

    NSMutableDictionary *[NSString stringWithFormat:@"loopDictionary%i", loopInt] = [[[NSMutableDictionary alloc] init] autorelease]; 
    [NSString stringWithFormat:@"loopDictionary%i", loopInt] = [NSDictionary dictionaryWithObject:[array1 objectAtIndex:loopInt] 
               forKey:[array2 objectAtIndex:loopInt]]; 
    loopInt = loopInt + 1; 
} 
+0

Bạn có thể làm rõ những gì bạn muốn không? Bạn muốn tạo một mảng từ điển mà mỗi từ chỉ chứa một giá trị? – kubi

Trả lời

4

Tạo một mảng và vòng lặp có thể thay đổi cho đến khi bạn đạt đến số lượng mảng ban đầu, tạo từ điển và thêm vào mảng có thể thay đổi trên mỗi lần lặp.

Mã của bạn sẽ giống như thế này.

NSMutableArray *dictionaries = [[NSMutableArray alloc] init]; 
for (int i = 0; i < doesntContainAnother.count; i++) { 
    [dictionaries addObject:[NSMutableDictionary dictionaryWithObject:[array1 objectAtIndex:i] forKey:[array2 objectAtIndex:i]]]; 
} 

Cách tiếp cận tạo biến có số ở cuối tên của chúng là một mẫu giả và thậm chí không thể có trong Mục tiêu-C. Nó tương đương với một mảng, nhưng clunkier.

+0

Vâng, điều đó có ý nghĩa. Tôi cập nhật câu hỏi của tôi với mã tôi đã đưa ra. Tôi chỉ không biết cách đặt đối tượng làm tên biến. :/ –

+0

Đó chính là điều tôi đang cố gắng làm. Tôi đã có nó trong đầu của tôi nhưng tôi vẫn còn quá mới với mục tiêu-c, và phải trung thực tôi không nghĩ rằng tôi đã từng làm điều đó trong C + +. –

2

Bạn cần tạo một mảng có thể thay đổi và sau đó đặt các đối tượng vào mảng. Bạn không thể tạo biến có cùng tên với nội dung của chuỗi, như bạn đã làm. Ví dụ:

NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:[doesntContainAnother count]]; 
int i = 0; // Note: type is int, not int* 
for (i = 0; i < [doesntCountainAnother count]; i++) { 
    [arr addObject:[NSMutableDictionary dictionary]]; 
} 

// Later... 
NSMutableDictionary *d1 = [arr objectAtIndex:3]; 

Hoặc nếu bạn muốn kéo họ ra khỏi danh sách theo tên:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:[doesntCountainAnother count]]; 
int i = 0; 
for (i = 0; i < [doesntContainAnother count]; i++) { 
    [dict setObject:[NSMutableDictionary dictionary] forKey:[NSString stringWithFormat:@"loopDictionary%d", i]]; 
} 

// Later... 
NSMutableDictionary *d1 = [dict objectForKey:@"loopDictionary3"]; 

Nhưng cách đầu tiên là khả năng dễ nhất.

+0

Cảm ơn bạn đã giải thích điều này. Tôi hiểu điều này tốt hơn bây giờ :) –

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