【发布时间】:2016-07-04 19:24:55
【问题描述】:
我在检查 UIImage 是否为 nil 以显示 UIAlertViewController 时遇到问题。
我的应用从 youtube 频道获取播放列表。其中一个播放列表包含已被 YouTube 删除的视频,因此在获取播放列表数据时不包含“缩略图”键。
这是我实现的代码,用于检查是否有要显示的缩略图,否则显示警报。
print("playlistVideos_ARRAY = \(self.playlistVideos_ARRAY)")
print("startOfNextIndexForVideos = \(self.startOfNextIndexForVideos)")
if let thumbnailImage: UIImage = UIImage(data: NSData(contentsOfURL: NSURL(string: ( ( ( (self.playlistVideos_ARRAY[self.startOfNextIndexForVideos] as! Dictionary<NSObject, AnyObject> )["snippet"] as! Dictionary<NSObject, AnyObject> )["thumbnails"] as! Dictionary<NSObject, AnyObject> )["high"] as! Dictionary<NSObject, AnyObject> )["url"] as! String )! )! )!
{
print("111111111")
self.thumbnailOfVideo.append(thumbnailImage)
}
else
{
print("222222222")
let message = UIAlertController(title: "Uh Oh!", message: "There is an issue with this playlist :(", preferredStyle: .Alert)
let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
message.addAction(defaultAction)
dispatch_async(dispatch_get_main_queue(), {
self.presentViewController(message, animated: true, completion: nil)
})
}
但是,它从不输出222222222。它总是在 if 检查时失败,输出如下:
playlistVideos_ARRAY = [{
etag = "\"q5k97EMVGxODeKcDgp8gnMu79wM/Jl892aZsvFYpvjE5ENwTItH9cqQ\"";
id = PLP2q8Ric9B9X6r8L2LA7xRwg0HNnKL3RLaooSkbmjTxo;
kind = "youtube#playlistItem";
snippet = {
channelId = UC5ltMmeC4YFaart1SSXdmAg;
channelTitle = "Viet My Television";
description = "This video is private.";
playlistId = "PLxnnlv22Xcq34TNdsMxEIKvIHE_phd7XK";
position = 0;
publishedAt = "2016-03-16T18:51:39.000Z";
resourceId = {
kind = "youtube#video";
videoId = uPnWMZ1pbSc;
};
title = "Private video";
};
}]
startOfNextIndexForVideos = 0
fatal error: unexpectedly found nil while unwrapping an Optional value
在检查这个方面我做错了什么?谢谢。
编辑:
下面是我的playlistVideos_ARRAY 通过 GET 请求获取的输出,该请求包含一个有效的播放列表以及 YouTube 尚未删除的相关视频的缩略图:
playlistVideos_ARRAY = [{
etag = "\"q5k97EMVGxODeKcDgp8gnMu79wM/U4OVbnjwS2bbU44Q1Hijy6-koAE\"";
id = "PLP2q8Ric9B9VZXfc41HzRjprfOHpOYQd_SbLAuuxZVyw";
kind = "youtube#playlistItem";
snippet = {
channelId = UC5ltMmeC4YFaart1SSXdmAg;
channelTitle = "Viet My Television";
description = "";
playlistId = PLxnnlv22Xcq0HpE242iwHh8IP78esU9sF;
position = 0;
publishedAt = "2016-02-15T23:25:20.000Z";
resourceId = {
kind = "youtube#video";
videoId = mIW5trLZJcM;
};
thumbnails = {
default = {
height = 90;
url = "https://i.ytimg.com/vi/mIW5trLZJcM/default.jpg";
width = 120;
};
high = {
height = 360;
url = "https://i.ytimg.com/vi/mIW5trLZJcM/hqdefault.jpg";
width = 480;
};
medium = {
height = 180;
url = "https://i.ytimg.com/vi/mIW5trLZJcM/mqdefault.jpg";
width = 320;
};
};
title = "talkshow chuong trinh hoi cho tet Binh Than o Miles Square Park";
};
}]
【问题讨论】:
标签: ios swift uiimage youtube-api