Objective-C中的任何函数是否与PHP中的array_search
类似?我试图制作一个应该有效的,但逻辑不对。
-(BOOL)searchInArray :(NSMutableArray *)allData :(float)dataToFind {
BOOL *temp = false;
for(int i=0;i<=[allData count];i++){
if([[allData objectAtIndex:i] floatValue] == dataToFind){
return true;
} else {
return false;
}
}
return temp;
}
答案 0 :(得分:2)
您的实施几乎是正确的。问题是,如果数组中的第一个元素与您正在搜索的float
不匹配,那么该方法将返回false
而不查看数组的其余部分。
如果任何数组元素匹配,您要做的就是返回true
,只有在查看整个数组时才返回false
,并且它们都不匹配。
- (BOOL)searchInArray:(NSMutableArray *)allData forFloat:(float)dataToFind {
for (int i = 0; i < [allData count]; i++) {
if ([[allData objectAtIndex:i] floatValue] == dataToFind) {
return true;
}
}
return false;
}
更现代/可读的版本可能如下所示:
- (BOOL)array:(NSMutableArray *)array containsFloat:(float)theFloat {
for (NSObject *object in array) {
if ([object isKindOfClass:[NSNumber class]]) {
NSNumber *number = (NSNumber *)object;
if (number.floatValue == theFloat) {
return YES;
}
}
}
return NO;
}
此版本与原版有一些变化:
YES
和NO
代替true
和false
;建议用于Objective C代码。floatValue
之前,它会检查数组的每个元素以确保它是一个数字;如果您的数组包含不是数字的内容,这将防止发生错误。答案 1 :(得分:0)
试试这个:
- (BOOL)searchInArray:(NSArray<NSNumber *> *)array forFloat:(float)floatToFind
{
for (NSNumber *number in array) {
if (number.floatValue == floatToFind) {
return YES;
}
}
return NO;
}