我正在开发一个项目,当用户在我的UITableView中点击对象时,我将对象添加到数组中。用户可以添加单个对象的多个,但不超过4.如果数组中已有4个,我无法弄清楚如何停止添加对象。有没有办法检查单个对象存储在阵列中的数量?
这是我到目前为止所拥有的:
if (![deckArray containsObject:[cardArray objectAtIndex: indexPath.row]] || [deckArray containsObject:[cardArray objectAtIndex: indexPath.row]] ) {
[deckArray addObject:[cardArray objectAtIndex: indexPath.row]];
}
答案 0 :(得分:1)
首先,您的条件语句始终为true。它说:“如果牌组包含或不包含对象,则添加它。”
这是一种效率低下的方法。它很慢,因为你需要枚举deckArray中的每张卡,但是如果那个数组永远不会很大(比如100个元素),那么这就足够了:
id card = [cardArray objectAtIndex:indexPath.row];
int count = 0;
for( id deckCard in deckArray )
{
if( [deckCard isEqualTo:card] )
count++;
}
if( count < 4 )
[deckArray addObject:card];
如果deckArray的顺序无关紧要,您可以使用NSCountedSet并快速查看已添加卡的次数:
// somewhere else, deck is declared as:
NSCountedSet * deck = [NSCountedSet set];
// somewhere else
id card = [cardArray objectAtIndex:indexPath.row];
if( [deck countForObject:card] < 4 )
[deck addObject:card];