我遇到的foursquare api端点要求我将照片前缀,大小和后缀组合在一起以创建可用的图像URL。我试图在" photoURL"目前有效的常数。
我如何检查这个photoURL的所有部分的数据是否存在(使用if let),同时将变量组合在一起,使用Haneke从URL设置venueImageView?
这是我的代码:
func bindData() {
let ratingSignals = self.dog?["venue"]["ratingSignals"].stringValue
let photoURLPrefix = self.dog?["venue"]["featuredPhotos"]["items"][0]["prefix"].stringValue
let photoURLSuffix = self.dog?["venue"]["featuredPhotos"]["items"][0]["suffix"].stringValue
let photoURL = photoURLPrefix! + "original" + photoURLSuffix!
let venuePhotoURL = NSURL(string: photoURL)
println("photo url prefix is \(photoURLPrefix)")
println("photo url suffix is \(photoURLSuffix)")
println(photoURL)
self.openUntilLabel.text = self.dog?["venue"]["hours"]["status"].stringValue
self.addressLabel.text = self.dog?["venue"]["location"]["address"].stringValue
self.titleLabel.text = self.dog?["venue"]["name"].stringValue
self.ratingsLabel.text = "Based on \(ratingSignals) ratings"
self.ratingImageView.image = UIImage(named:"Score8-5")!
if let photoURL = photoURLPrefix! + "original" + photoURLSuffix!{
let url = NSURL(string: photoURL)
venueImageView.hnk_setImageFromURL(url!)
}
我注释了当前有效的self.venueImageView.hnk_setImageFromURL(venuePhotoURL!),但我担心如果请求没有返回图像,它会使应用程序崩溃。所以我试图使用if来检查数据是否存在,然后在此语句中设置imageView。
我收到的错误:
"条件绑定中的绑定值必须是可选类型"
以下是错误图片:
答案 0 :(得分:0)
我没有运行你的代码,但我认为你的代码会崩溃,即使你删除了if条件,如果没有数据则完全阻止。
您应该像这样验证您的回复;
let photoURLPrefix? = self.dog?["venue"]["featuredPhotos"]["items"][0]["prefix"] as String?
let photoURLSuffix? = self.dog?["venue"]["featuredPhotos"]["items"][0]["suffix"] as String?
if (photoURLPrefix == nil || photoURLSuffix == nil)
{
//Do not proceed
return;
}
我不知道你是否从狗对象中检索数据的方式是有效的,但重要的是要使用的可选符号。
答案 1 :(得分:0)
鉴于GET请求将始终返回后缀,如果存在前缀,我只是针对前缀进行测试,并且不需要"组合"它们。
这是我的解决方案:狗(上图)现在是" pin"
if let photoURLPrefix = self.pin?["venue"]["featuredPhotos"]["items"][0]["prefix"].stringValue {
let photoURLSuffix = self.pin?["venue"]["featuredPhotos"]["items"][0]["suffix"].stringValue
let photoURL = photoURLPrefix + "original" + photoURLSuffix!
let venuePhotoURL = NSURL(string: photoURL)
self.venueImageView.hnk_setImageFromURL(venuePhotoURL!)
println("photo url prefix is \(photoURLPrefix)")
println("photo url suffix is \(photoURLSuffix)")
println(photoURL)
}