2011-05-24 52 views
0

我確定這是非常基本的,但我看不出我做錯了什麼。有人可以幫助我瞭解我哪裏錯了嗎?我在xcode工作。我試圖根據保存在屬性列表中的值顯示視圖的不同部分。如果分配給特定UITextField的值等於零,那麼我想隱藏該UITextField。我正在嘗試這樣做。 gross是UITextField的名稱:Objective-C:將if/else語句與Plist值一起使用

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語句有關。我知道這是非常基本的,但我不太明白我要出錯的地方。所以你的幫助非常感謝。

+1

這是最後一行的拼寫錯誤嗎? – Abizern 2011-05-24 16:09:19

回答

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"

+0

感謝您的回覆和解釋。我用你的第二條if語句來使我的代碼工作。我仍然對字符串/數組問題感到困惑。我猜我的plist是通過在程序中保存數據自動創建的,它由一系列字符串組成,其中的文本是ints。非常感謝您花時間回答。 – 2011-05-24 16:36:58

2
if ([[array objectAtIndex:7] intValue] == 0) 

第一個錯誤是關閉的位置]。第二個是你可能有NSString數組,因爲你已經在text屬性中分配了它。所以你需要使用intValue將它轉換爲int。

1

首先獲取數組的長度並確保它具有足夠的元素然後開始訪問元素本身可能會更容易。

2

如果您的數組中包含的NSString那麼你的情況應該是這樣的:

if ([[array objectAtIndex:7] intValue] == 0) { 
... 

if ([[array objectAtIndex:7] isEqualToString:@"0"]) { 

1日條件也將工作,如果你的數組包含在你的情況NSNumbers(不太可能爲您分配數組元素爲文本屬性),但如果字符串不是有效數字將失敗 - 在這種情況下,intValue也將返回0。

如果您確定自己的元素是字符串,並且想要與@「0」完全比較,那麼第二種情況將正常工作。


你的條件相當於

if ([array objectAtIndex:0]) 

因爲==操作符具有更大的優先級,計算結果爲0數組的元素進行比較,以0直接也沒有任何意義,因爲NSArray中不能無對象包含反正

+0

感謝您的意見。它有助於澄清我遇到的問題 – 2011-05-24 16:40:30