回答
的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. Smalltalk - 比較兩個字符串是否相等
- 2. PHP比較字符串是否(幾乎)相等
- 3. 比較兩個字符串是否相等
- 4. 如何使用GSON比較兩個JSON字符串是否相等?
- 5. 字符串比較等效
- 6. 將字符串與NSArray比較
- 7. 如何比較兩個字符串在php中的相等性?
- 8. 如何比較兩個字符串,如果它們不相等
- 9. C#字符串相等比較中StringComparison.CurrentCultureIgnoreCase的代價是多少?
- 10. 比較字符串在KSH平等
- 11. 如何比較字符串?
- 12. 如何比較字符串是JavaScript?
- 13. String比較null和empty是否相等
- 14. 比較兩次公差是否相等?
- 15. 比較兩組是否相等遞歸?
- 16. 如何比較包含相同字符的2個字符串
- 17. 如何比較char或string變量是否等於某個字符串?
- 18. 如何比較字符串以查看在'$'之前輸入的字符是否等於後面的字符?
- 19. SQL沒有正確評估字符串的相等比較
- 20. 在intern()方法後比較兩個相等的字符串
- 21. 2個相等字符串的比較返回false
- 22. C#比較相似的字符串
- 23. 覆蓋等於和比較字符串
- 24. 比較字符串顯示不等於
- 25. 如何比較C++中的兩個ostream對象是否相等?
- 26. 兩個字符串使用'='進行比較相等,但'失敗'比較
- 27. MongoDB:相當於ObjectID比較的字符串ID的$ lt比較?
- 28. 如何在python中比較字符串中是否存在condtion?
- 29. 如何確定目標C中的字符串是否相等?
- 30. Java,「指針」相等和字符串比較
「==」在比較字符串時是錯誤的。應該是「isEqualToString」 – Umgre 2012-07-16 13:09:55
==檢查是爲了避免比較'firstObject'本身。比較的那一行是那個使用'-isEqual:'的那個。 – paulmelnikow 2012-07-16 15:37:27