我需要一个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;
}
但它始终显示按钮并播放部分音频然后崩溃。我错过了什么?
答案 0 :(得分:1)
您的数组已包含字符串,因此请替换:
walkingAudioChosen = [NSString stringWithFormat:@"%@", [self.walkingAudio objectAtIndex:self.carousel.currentItemIndex]];
与
walkingAudioChosen = [self.walkingAudio objectAtIndex:self.carousel.currentItemIndex];
因为格式无法帮助您。
将if
语句更改为:
if ([walkingAudioChosen isEqualToString:@"NULL"]) {
因为你想要比较2个对象的内容,而不是一个指向NULL的指针。
(修正了if
中的拼写错误,需要比较字符串,而不是数组)