2014-03-13 48 views
1

我需要持有一些空值的plist中的數組(即不是每一個選擇都會有聲音),我已經創建如下:隱藏/顯示基於信息的按鈕中的plist

<dict> 
<key>WalkingAudio</key> 
    <array> 
    <string>NULL</string> 
    <string>classical.mp3</string> 
    <string>NULL</string> 
    </array> 

我碰到這樣做出的選擇的信息:

//awakeFromNib 
NSString *myPlist = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"]; 
NSDictionary *rootDictionary = [[NSDictionary alloc] initWithContentsOfFile:myPlist];  
self.walkingAudio = [rootDictionary objectForKey:@"WalkingAudio"]; 

//didSlectItemAtIndex 
walkingAudioChosen = [NSString stringWithFormat:@"%@", [self.walkingAudio objectAtIndex:self.carousel.currentItemIndex]]; 

我需要的是一個按鈕,將成爲下一個視圖控制器上可見,只有當有音頻可用,如果沒有音頻可用仍然隱藏。什麼是最有意義的我是在prepareForSegue方法的if-else語句如下:

if (walkingAudio == NULL) { 
     dvc.playButton.hidden=YES; 
    } else { 
     dvc.playButton.hidden=NO; 
    } 

但它總是顯示按鈕和播放音頻的一部分,然後崩潰。我錯過了什麼?

回答

1

你的陣列已經包含字符串,所以更換:

walkingAudioChosen = [NSString stringWithFormat:@"%@", [self.walkingAudio objectAtIndex:self.carousel.currentItemIndex]]; 

walkingAudioChosen = [self.walkingAudio objectAtIndex:self.carousel.currentItemIndex]; 

因爲格式沒有做任何事情來幫助你。

更改if聲明:

if ([walkingAudioChosen isEqualToString:@"NULL"]) { 

,因爲你要比較兩個對象,而不是一個指針爲NULL的內容。

(更正了if一個錯字爲好,需要比較字符串,而不是數組)

+1

爲了增加@Wain例如,你也可以擺脫'如果... else'通過編碼'dvc.playButton.hidden =([walkingAudioChosen isEqualToString:@「NULL」]);' – Flexicoder

+0

只是改變我的代碼,以反映你的建議,但我仍然有同樣的問題。我在下一個視圖控制器上有按鈕效果(即陰影等)。我是否也需要將這些條件放入? – Melissa

+0

明白!對於任何有相同問題的人,我在視圖控制器中使用了if-else語句,其中按鈕位於我爲該按鈕創建的陰影效果周圍,並且它工作正常。這兩個答案都非常有幫助 - 非常感謝你! – Melissa