首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective-C:将if/else语句与Plist值一起使用

Objective-C:将if/else语句与Plist值一起使用
EN

Stack Overflow用户
提问于 2011-05-25 00:06:06
回答 4查看 1.2K关注 0票数 0

我确信这是非常基本的,但我看不出我做错了什么。有没有人能帮我弄清楚哪里出错了?我在xcode工作。我正在尝试根据属性列表中保存的值显示视图的不同部分。如果分配给特定UITextField的值等于零,那么我想隐藏该UITextField。我试着这样做。gross是UITextField的名称:

代码语言:javascript
复制
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语句的方式有关。我知道这是非常基础的,但我不太明白我错在哪里。因此,非常感谢您的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-25 00:15:27

代码应该是这样的:

代码语言:javascript
复制
   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,那么您应该改用条件

代码语言:javascript
复制
if ([[array objectAtIndex:7] intValue] == 0) {

注以上行适用于文本包含整数的字符串,例如@"0"@"7"

票数 3
EN

Stack Overflow用户

发布于 2011-05-25 00:09:59

代码语言:javascript
复制
if ([[array objectAtIndex:7] intValue] == 0)

第一个错误是关闭]的位置。第二个问题是您可能在数组中有NSString,因为您已经在text属性中指定了它。因此您需要使用intValue将其转换为int。

票数 2
EN

Stack Overflow用户

发布于 2011-05-25 00:16:14

如果您的数组包含nsstring,则条件应如下所示:

代码语言:javascript
复制
if ([[array objectAtIndex:7] intValue] == 0) {
...

代码语言:javascript
复制
if ([[array objectAtIndex:7] isEqualToString:@"0"]) {

如果您的数组包含NSNumbers (在您的例子中不太可能,因为您将数组元素分配给text属性),则第一个条件也适用,但如果string不是有效的数字,则条件1将失败-在这种情况下,intValue也将返回0。

如果你确定你的元素是字符串,并且你想和@"0“进行精确的比较,那么第二个条件就行得通了。

你的情况相当于

代码语言:javascript
复制
if ([array objectAtIndex:0]) 

因为==运算符具有更高的优先级,并且计算结果为0。直接将数组的元素与0进行比较也没有意义,因为NSArray无论如何都不能包含nil对象

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6113383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档