0

我想从图书馆阅读一张照片

在这个函数中

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage

现在我想知道那张风景照片是不是我试着绑定这段代码

if(pickedImage?.size.width > pickedImage?.size.height)

但是我收到了这个错误Binary operator '>' cannot be applied to two 'CGFloat?' 操作数我该如何解决这个问题

4

4 回答 4

2

尝试这个

 if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage

   { 
      if pickedImage.size.width > pickedImage.size.height 
      {
         /// landscape mode
      }

   }

}
于 2018-02-11T13:30:44.293 回答
1

这里的问题是您尝试使用Optional值,而不是展开。要解开价值,您可以使用guard

guard let pickedImage = pickedImage else { 
    // false logic here
    return 
}

if pickedImage.size.height > pickedImage.size.height {

} else {

}

顺便问一下,您确定要将pickedImage的高度与自身进行比较吗?看起来很奇怪。

于 2018-02-11T13:32:56.190 回答
1

我找到了这个代码的解决方案?->!

if(pickedImage!.size.width > pickedImage!.size.height)
于 2018-02-11T13:43:59.443 回答
0

另一种可能的解决方案是使用开关模式匹配:

switch image?.size {
case .some(let size) where size.height > size.width:
  // do something
default:
  break
}
于 2018-02-11T17:29:56.680 回答