这是我的代码:
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"Row %i at View: %@",indexPath.row, [delegate.my_condition objectAtIndex:indexPath.row]);
if ([@"0" isEqualToString:[delegate.my_condition objectAtIndex:indexPath.row]]){
NSLog(@"Store is closed");
} else {
NSLog(@"Store is open");
在日志中我看到:
2012-08-29 22:33:59.434 MyApp[2593:c07] Row 0 at View: 0
2012-08-29 22:33:59.435 MyApp[2593:c07] Store is open
2012-08-29 22:33:59.437 MyApp[2593:c07] Row 1 at View: 0
2012-08-29 22:33:59.438 MyApp[2593:c07] Store is open
2012-08-29 22:33:59.440 MyApp[2593:c07] Row 2 at View: 0
2012-08-29 22:33:59.441 MyApp[2593:c07] Store is open
所以我确实看到该值为0但我没有看到if子句而是else子句。
为什么?
myCondition is NSMutableArray
这是我向NSMutableArray添加项目的方式:
NSString *parsed=[res objectForKey:@"Data"];
[delegate.my_condition addObject:parsed];
答案 0 :(得分:3)
这里没有足够的信息来提供明确的答案,但我看到了一些可能性。
"0"
不等于"0 "
,但在日志记录输出中看起来相同。NSNumber
,其值为0.在日志记录中它仍然看起来相同,但它不是一个相同的对象。尝试检查对象的类。答案 1 :(得分:0)
您确定delegate.my_condition
中的值是字符串吗?看起来他们可能是NSNumber*
。当然,NSNumber*
永远不会等于NSString*
。
您可能想尝试类似
的内容if ([[delegate.my_condition objectAtIndex:indexPath.row] intValue] == 0) {
NSLog(@"Store is closed");
} // ...
相反,它假设该值是表示数字的NSNumber*
或NSString*
。
答案 2 :(得分:0)
您的NSMutableArray是否返回字符串?这可能会发生,因为您返回NSNumber类型而不是字符串。在这种情况下,您可能希望将stringValue放在对象的末尾以将其转换为字符串。
答案 3 :(得分:-1)
尝试翻转条件,如下所示:
if ([[delegate.my_condition objectAtIndex:indexPath.row] isEqualToString:@"0"]) {
或
NSString *_string = [delegate.my_condition objectAtIndex:indexPath.row];
if ([_string isEqualToString:@"0"]) {
在类似
的字符串上调用函数可能会遇到麻烦