回答
的NSArray
类是通用的,所以它不会包含功能来执行这一点,所以,是的,你必须自己去查每个字符串。
trojanfoe是对的。你可以用类别来增强NSArray并做类似的事情...
NSArray *array = @[ @"A", @"B", @"C" ];
__block BOOL allObjectsAreEqual = YES;
if (array.count > 1) {
NSString *firstObject = array[0];
[array enumerateObjectsUsingBlock:^void(id obj, NSUInteger idx, BOOL *stop) {
if (idx == 0) {
return;
}
if ((allObjectsAreEqual = [firstObject isEqualToString:obj]) == NO) {
*stop = YES;
}
}];
// And here check for allObjectsAreEqual ...
......有很多方法可以做到这一点。
你想检查是否所有的字符串都相等?
@interface NSArray (MyAdditions)
- (BOOL) isFilledWithEqualObjects {
if (!self.count) return YES;
id firstObject = [self objectAtIndex:0];
for (id obj in self) {
// Avoid comparing firstObject to itself (and any other pointers to
// firstObject)
if (firstObject == obj) continue;
if (![firstObject isEqual:obj]) return NO;
}
return YES;
}
@end
该示例使用-isEqual:
来处理任何类型的对象。如果你知道的内容是字符串,您可以使用-isEqualToString:
代替:
if (![firstObject isEqualToString:obj]) return NO;
您可以通过创建从阵列中一组新的做到这一点。该集合将只包含唯一条目,因此如果集合中元素的数量是1,那么数组中的所有项目都是相等的。
NSSet *uniqueItems = [NSSet setWithArray:yourArray];
if ([uniqueItems count] < 2) {
// All items in "yourArray" are the same (no matter how many they are)
}
在上述例子中我考虑空集(表示空数组),为是唯一的为好。如果你没有,那么你可以改变if语句来if ([uniqueItems count] == 1) { ... }
这也将适用于任何对象,而不仅仅是字符串。
有趣。这种方式代码不多,而且对于一个小阵列或几乎没有独特元素时可能会很快。但是,对于大型阵列或许多独特元素,这需要进行大量额外比较。 – paulmelnikow 2012-07-16 15:44:18
@noa我认为,由于OP认为所有元素都可以相等,所以它很可能只是一些独特的值,并且可能不超过数组中的几百个值,在这种情况下,性能不应该是问题。 – 2012-07-16 20:43:33
- 1. 比较字符串是否相等
- 2. 如何比较字符串是否不相等?
- 3. python-字符串相等和ord()比较?
- 4. 比较字符串的长度相等
- 5. PHP比较字符串是否(几乎)相等
- 6. 比较两个字符串是否相等
- 7. 如何比较字符串和任何类型是否相等或很快?
- 8. 如何使用GSON比较两个JSON字符串是否相等?
- 9. 字符串比较等效
- 10. 将字符串与NSArray比较
- 11. 如何比较两个字符串在php中的相等性?
- 12. 整数字符串比较是相等的(PHP错误?)
- 13. C#字符串相等比较中StringComparison.CurrentCultureIgnoreCase的代价是多少?
- 14. 比较字符串在KSH平等
- 15. 比较字符串是否加密?
- 16. 比较字符串是否具有相同的位数
- 17. String比较null和empty是否相等
- 18. 比较两次公差是否相等?
- 19. 比较两个DRIVER_OBJECT是否相等?
- 20. 比较三个值是否相等
- 21. 比较uuids是否相等(在php中)
- 22. 比较两组是否相等递归?
- 23. 如何比较字符串
- 24. 如何比较字符串
- 25. 如何比较字符串?
- 26. 如何比较字符串是JavaScript?
- 27. 当字符串包含标点符号时检查字符串是否相等
- 28. 比较等于星号的字符串
- 29. 如何比较字符串与ü,ć,š等特殊字符?
- 30. 如何比较2个具有相似字符的字符串?
“==”在比较字符串时是错误的。应该是“isEqualToString” – Umgre 2012-07-16 13:09:55
==检查是为了避免比较'firstObject'本身。比较的那一行是那个使用'-isEqual:'的那个。 – paulmelnikow 2012-07-16 15:37:27