在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,或者我以错误的方式将其取回。
答案 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];
应该可以。