NSMutableDictionary返回空的NSMutableArray

时间:2012-07-31 08:49:53

标签: objective-c nsmutablearray nsmutabledictionary

在mouseDown和mouseDragged:

locll = [self convertPoint: [event locationInWindow] fromView:nil];
NSValue *locationValuell = [NSValue valueWithPoint:locll];
[vertices addObject:locationValuell];

at mouseUp

NSString *index = [NSString stringWithFormat:@"%d", aIndex++];
[aDict setObject:vertices forKey:index];
NSArray *allKeys = [aDict allKeys];
NSLog(@"dict count: %ld", [allKeys count]);
NSString *index1 = [NSString stringWithFormat:@"%d", aIndex];
NSMutableArray *a = [aDict objectForKey:index1];
NSLog(@"a count:%li", [a count]);

在initWithCoder

int aIndex = 0;

dict count返回字典中存储的对象数。它有效。但后来当我尝试从字典中获取数组时,我检查了数组对象的数量([计数])并返回0.所以我猜NSMutableDictionary会清空我的NSMutableArray,或者我以错误的方式将其取回。

3 个答案:

答案 0 :(得分:2)

下面

NSString *index = [NSString stringWithFormat:@"%d", aIndex++];

在使用后增加aIndex (增量后)。因此,如果index为“0”,则index1将为“1”。因此

NSMutableArray *a = [aDict objectForKey:index1];

返回nil

答案 1 :(得分:0)

在将aIndex用于在aDict中保存顶点后,您将aIndex增加1。并且在它(aIndex)增加1之后访问此密钥。当然,您的aDict不包含该密钥的任何数组。

答案 2 :(得分:0)

试试这个:

       NSMutableArray *a=[NSMutableArray arrayWithObjects:[aDict objectForKey:index1], nil];

应该可以。