我确信这是非常基本但我看不出我做错了什么。有人可以帮我理解我出错的地方吗?我在xcode工作。我正在尝试根据保存在属性列表中的值来显示视图的不同部分。如果分配给特定UITextField的值等于零,那么我想隐藏该UITextField。我想这样做。 gross是UITextField的名称:
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
gross.text = [array objectAtIndex:7];
if ([array objectAtIndex:7 == 0]) {
gross.hidden = YES;
}
else {
gross.hidden = NO;
}
[array release];
我认为这个问题与我编写if / else语句的方式有关。我知道这是非常基本的,但我不太明白我哪里出错了。所以非常感谢您的帮助。
答案 0 :(得分:3)
代码应为:
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
gross.text = [array objectAtIndex:7];
if ([[array objectAtIndex:7] isEqualToString:@"0"]) {
gross.hidden = YES;
} else {
gross.hidden = NO;
}
[array release];
这假设您的数组索引7处的对象存在并且是一个字符串。如果它实际上是一个NSNumber,那么你应该使用条件
if ([[array objectAtIndex:7] intValue] == 0) {
请注意,上面的行适用于文本包含int的字符串,例如@"0"
或@"7"
。
答案 1 :(得分:2)
if ([[array objectAtIndex:7] intValue] == 0)
第一个错误是关闭]
的位置。第二个是你可能在数组中有NSString,因为你已经在text属性中分配了它。因此,您需要使用intValue
将其转换为int。
答案 2 :(得分:2)
如果您的数组包含nsstring,那么您的条件应如下所示:
if ([[array objectAtIndex:7] intValue] == 0) {
...
或
if ([[array objectAtIndex:7] isEqualToString:@"0"]) {
如果您的数组包含NSNumbers(在您将数组元素分配给text属性时不太可能),第一个条件也会起作用,但如果string不是有效数字则会失败 - 在这种情况下intValue也会返回0。
如果您确定您的元素是字符串并且您想要与@“0”完全比较,则第二个条件将正常工作。
<小时/> 您的情况相当于
if ([array objectAtIndex:0])
因为==运算符具有更高的优先级并且计算结果为0.将数组的元素直接比较也没有意义,因为NSArray无论如何也不能包含nil对象
答案 3 :(得分:1)
首先获取数组的长度可能更容易,并确保它有足够的元素,然后开始自己访问元素。