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」の場合は「 index11」になります。したがって

NSMutableArray *a = [aDict objectForKey:index1];

戻りますnil

于 2012-07-31T09:24:29.037 に答える
0

これを試してみてください:

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

それは仕事であるべきです。

于 2012-07-31T09:29:59.220 に答える
0

aDictに頂点を保存するためにaIndexを使用した後、aIndexを1増やしています。it(aIndex) が 1 増加した後、このキーにアクセスします。当然、aDict にはそのキーの配列は含まれません。

于 2012-07-31T09:25:45.260 に答える