Swift:从对象数组中获取最大的CGSize(按高度比较)

时间:2019-03-18 09:56:46

标签: arrays swift

我有一个名为personGalleryView.slideshowItems

的对象数组

我需要获得最大的图像CGSize(按高度进行比较)。

要获取第一个条目CGSize,我使用personGalleryView.slideshowItems.first?.imageView.image?.size

但是要获得最大的而不是我要使用的第一个:

let maxSize = personGalleryView.slideshowItems
            .map { $0.imageView.image?.size }
            .max(by: { $0?.height < $1?.height })

但是编译器在Cannot convert value of type 'CGFloat?' to expected argument type 'Self'上犯了错误$0?.height

如何实现?

无论如何,谢谢!

1 个答案:

答案 0 :(得分:2)

我建议使用.compactMap,因为它会删除nil的值,因此您可以毫无问题地使用.max

let maxSize = personGalleryView.slideshowItems
.compactMap { $0.imageView.image?.size }
.max(by: { $0.height < $1.height })