2014-03-13 49 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