我已经使用这种方法几个小时了。它应该简单地检查作为otherCards
isEqual 传入的卡片的属性是否与这个(自我)类实例的相同属性。但我正在扯掉我的头发 - 它给出了错误的结果
(BOOL)otherCards: (NSArray *)otherCards allHaveUnequalAttribute: (NSString *)key
{
NSArray *values = [NSArray arrayWithArray:[otherCards valueForKey:key]];
int countUnequalMatches = 0;
for (NSNumber *setValue in values) {
if (![[self valueForKey:key] isEqual:setValue]) {
countUnequalMatches++;}
}
NSLog(@"countUnequalMatches %d values count: %d", countUnequalMatches, [values count]);
if (countUnequalMatches == [values count]) return YES ?: NO;
}
它是这样调用的:
if ([self otherCards:otherCards allHaveUnequalAttribute:CARD_SHAPE]) {
NSLog(@"All unequal");
} else {
NSLog(@"One or more card equal");
}