0

在 mouseDown 和 mouseDragged 处:

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

在 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 返回有多少对象存储在字典中。它有效。但是后来当我尝试从字典中取回数组时,我检查了数组中有多少对象([a count])并且它返回 0。所以我猜 NSMutableDictionary 清空了我的 NSMutableArray,或者我以错误的方式取回它。

4

3 回答 3

2

这里

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

aIndex 使用它后递增(后递增)。所以如果index是“0”,那么index1将是“1”。所以

NSMutableArray *a = [aDict objectForKey:index1];

返回nil

于 2012-07-31T09:24:29.037 回答
0

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

于 2012-07-31T09:25:45.260 回答
0

试试这个:

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

它应该是工作。

于 2012-07-31T09:29:59.220 回答