0

配列にある重複オブジェクトの数を数えようとしています。配列を NSCountedSet 関数に渡すと、オブジェクトがありません。私が見た例から、通常は NSArray を NSCountedSet に渡しますが、ここでは NSMutableArray を渡しています。しかし、それが許可されていないという文書は見つかりません。

-(void)GetDays
{
       ...
       BOOL goodDuplicates = NO;
       NSMutableArray *mostDaysAttended = [[NSMutableArray alloc] init];
       mostDaysAttended = [self gatherDays];
       goodDuplicates  = [self checkDuplicatesforIndex:mostDaysAttended];
       ...

{


-(BOOL)checkDuplicatesforIndex: (NSMutableArray *)mostDaysAttended
{


    NSCountedSet *set   = [[NSCountedSet alloc] initWithArray:mostDaysAttended];

    for (id item in set)  //<== at this point "set" has zero objects
    ...
    return(...)
}
4

2 に答える 2

0

これは、「NSCountedSet」宣言の後、「for」ループの前のコードです。

  //INITIALIZE
  for( int g =0;g<=11;g++)
    indexCount[g]=0;

このループを削除し、他のすべての宣言の前に関数の先頭に配置すると、コードは期待どおりに機能し始めました。これがセット内のオブジェクトの数に影響を与えた理由はわかりませんが、影響はありました。

于 2012-09-15T16:55:14.473 に答える
0

私の推測では、mostDaysAttended の割り当てが解除されているため、checkDuplicatesIndex を呼び出すと、そこには何もありません。これは、NSCountedSet *set..... 行の前に mostDaysAttended をログに記録することで簡単に確認できます。その場合は、mostDaysAttended の保持 (または強力) プロパティを作成します。

于 2012-09-13T01:41:07.033 に答える