我确信这是非常基本的,但我看不出我做错了什么。有没有人能帮我弄清楚哪里出错了?我在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语句的方式有关。我知道这是非常基础的,但我不太明白我错在哪里。因此,非常感谢您的帮助。
发布于 2011-05-25 00:15:27
代码应该是这样的:
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) {注以上行适用于文本包含整数的字符串,例如@"0"或@"7"。
发布于 2011-05-25 00:09:59
if ([[array objectAtIndex:7] intValue] == 0)第一个错误是关闭]的位置。第二个问题是您可能在数组中有NSString,因为您已经在text属性中指定了它。因此您需要使用intValue将其转换为int。
发布于 2011-05-25 00:16:14
如果您的数组包含nsstring,则条件应如下所示:
if ([[array objectAtIndex:7] intValue] == 0) {
...或
if ([[array objectAtIndex:7] isEqualToString:@"0"]) {如果您的数组包含NSNumbers (在您的例子中不太可能,因为您将数组元素分配给text属性),则第一个条件也适用,但如果string不是有效的数字,则条件1将失败-在这种情况下,intValue也将返回0。
如果你确定你的元素是字符串,并且你想和@"0“进行精确的比较,那么第二个条件就行得通了。
你的情况相当于
if ([array objectAtIndex:0]) 因为==运算符具有更高的优先级,并且计算结果为0。直接将数组的元素与0进行比较也没有意义,因为NSArray无论如何都不能包含nil对象
https://stackoverflow.com/questions/6113383
复制相似问题