Ios 在数组中查找浮点
Objective-C中是否有类似于PHP中的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]
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
留了一点改动,但我添加了一个现在是现代版了。