遍历数组然后将当前对象与字符串进行比较
Loop through array then compare current object to string
我正在尝试遍历 NSArray
并检查 objectAtIndex
是否等于 string
。
NSLog(@"%@", myArray) // 3 items. 1 of them is "a"
for (id object in myArray)
{
NSLog(@"What"); // 3 times
if ([object isEqual:@"a"]) {
NSLog(@"Hello"); // Never gets executed
}
}
问题是,if 语句中的 NSLog
永远不会执行?
编辑
(
(
a
),
(
01
),
(
a
),
(
03
)
)
当我将其设置为 isEqualToString
时,出现此错误:
2015-03-30 14:42:54.206 MyApp[1575:50954] -[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x7fe721ce3bf0
2015-03-30 14:42:54.215 MyApp[1575:50954] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x7fe721ce3bf0'
你的问题是你有一个包含三个子数组的数组,每个子数组大概包含一个字符串。你可以看出这一点,因为日志输出中的字符串周围有额外的 (),而且它告诉你你试图将选择器发送到 __NSArrayM
.
这是一个快速修复:
NSLog(@"%@", myArray) // 3 items. 1 of them is "a"
for (NSArray *array in myArray)
{
NSLog(@"What"); // 3 times
if ([array.firstObject isEqualToString:@"a"])
{
NSLog(@"Hello"); // Never gets executed
}
}
但正如其他人指出的那样,您可能想使用 isEqualToString:
,因为它的性能会更高。
您可能还想重新考虑生成此嵌套数组结构的代码,或者您通常使用的架构,因为它似乎... 没有必要。没有进一步的信息,就没什么可做的了。
我正在尝试遍历 NSArray
并检查 objectAtIndex
是否等于 string
。
NSLog(@"%@", myArray) // 3 items. 1 of them is "a"
for (id object in myArray)
{
NSLog(@"What"); // 3 times
if ([object isEqual:@"a"]) {
NSLog(@"Hello"); // Never gets executed
}
}
问题是,if 语句中的 NSLog
永远不会执行?
编辑
(
(
a
),
(
01
),
(
a
),
(
03
)
)
当我将其设置为 isEqualToString
时,出现此错误:
2015-03-30 14:42:54.206 MyApp[1575:50954] -[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x7fe721ce3bf0
2015-03-30 14:42:54.215 MyApp[1575:50954] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x7fe721ce3bf0'
你的问题是你有一个包含三个子数组的数组,每个子数组大概包含一个字符串。你可以看出这一点,因为日志输出中的字符串周围有额外的 (),而且它告诉你你试图将选择器发送到 __NSArrayM
.
这是一个快速修复:
NSLog(@"%@", myArray) // 3 items. 1 of them is "a"
for (NSArray *array in myArray)
{
NSLog(@"What"); // 3 times
if ([array.firstObject isEqualToString:@"a"])
{
NSLog(@"Hello"); // Never gets executed
}
}
但正如其他人指出的那样,您可能想使用 isEqualToString:
,因为它的性能会更高。
您可能还想重新考虑生成此嵌套数组结构的代码,或者您通常使用的架构,因为它似乎... 没有必要。没有进一步的信息,就没什么可做的了。