Ios 在数组中查找浮点

Ios 在数组中查找浮点,ios,objective-c,nsmutablearray,Ios,Objective C,Nsmutablearray,Objective-C中是否有类似于PHP中的array\u search的函数?我正试图做一个应该有效的,但逻辑是不正确的 -(BOOL)searchInArray :(NSMutableArray *)allData :(float)dataToFind { BOOL *temp = false; for(int i=0;i<=[allData count];i++){ if([[allData objectAtIndex:i] floatValue]

Objective-C中是否有类似于PHP中的
array\u 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;
}
-(BOOL)searchInArray:(NSMutableArray*)所有数据:(float)dataToFind{
BOOL*temp=false;
对于(int i=0;i请尝试以下方法:

- (BOOL)searchInArray:(NSArray<NSNumber *> *)array forFloat:(float)floatToFind
{
    for (NSNumber *number in array) {
        if (number.floatValue == floatToFind) {
            return YES;
        }
    }
    return NO;
}
-(BOOL)searchInArray:(NSArray*)数组用于float:(float)floatToFind
{
for(NSNumber*数组中的编号){
if(number.floatValue==floatToFind){
返回YES;
}
}
返回否;
}
试试这个:

- (BOOL)searchInArray:(NSArray<NSNumber *> *)array forFloat:(float)floatToFind
{
    for (NSNumber *number in array) {
        if (number.floatValue == floatToFind) {
            return YES;
        }
    }
    return NO;
}
-(BOOL)searchInArray:(NSArray*)数组用于float:(float)floatToFind
{
for(NSNumber*数组中的编号){
if(number.floatValue==floatToFind){
返回YES;
}
}
返回否;
}

您的实现几乎是正确的。问题是,如果数组中的第一个元素与正在搜索的
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;
}
此版本与原始版本相比有一些更改:

  • 它使用
    YES
    NO
    而不是
    true
    false
    ;这是目标C代码的建议
  • 它使用for-each循环,而不是通过索引访问数组;这更具可读性
  • 在尝试获取
    floatValue
    之前,它会检查数组中的每个元素,以确保它是一个数字;这将防止在数组中包含非数字的内容时发生错误

您的实现几乎是正确的。问题是,如果数组中的第一个元素与正在搜索的
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;
}
此版本与原始版本相比有一些更改:

  • 它使用
    YES
    NO
    而不是
    true
    false
    ;这是目标C代码的建议
  • 它使用for-each循环,而不是通过索引访问数组;这更具可读性
  • 在尝试获取
    floatValue
    之前,它会检查数组中的每个元素,以确保它是一个数字;这将防止在数组中包含非数字的内容时发生错误

如果您添加了对问题的解释以及如何解决问题的说明,这将是更好的答案。这将在NSArray*数组参数规范中添加泛型,因此如果您尝试传递任何其他NSArray,编译器将抛出错误。如果您添加对问题的解释,这将是更好的答案这将把泛型添加到NSArray*数组参数规范中,因此如果您试图传递NSArray的任何其他内容,编译器将抛出一个错误。这应该是
i<[allData count]
而不是
i和
i
应该是
NSInteger
,而不是
int
true
false
应该是
YES
NO
。哎哟,我错过了比较,谢谢@originaluser2。我把索引和
true
/
false
留了一点改动,但我添加了一个现在是现代版了,应该是
i<[allData count]
而不是
i和
i
应该是
NSInteger
,而不是
int
true
false
应该是
YES
NO
。哎哟,我错过了比较,谢谢@originaluser2。我把索引和
true
/
false
留了一点改动,但我添加了一个现在是现代版了。