在iOS 11 (Xcode 9 beta 5)中,我调用UIDynamicAnimator的items(in:)方法并立即崩溃:
NSArray元素与Swift数组元素类型匹配失败
到底怎么回事?
发布于 2017-08-19 18:14:20
你发现了一个窃听器。(向苹果公司提交,雷达33979954。)希望它很快就能修好,但在那之前,这里有一个解决办法:
extension UIDynamicAnimator {
func views(in rect: CGRect) -> [UIView] {
let nsitems = self.items(in: rect) as NSArray
return nsitems.flatMap{$0 as? UIView}
}
}现在调用view(in:)而不是items(in:),一切都会好起来的。
问题是正在将虚假的对象放入从items(in:)返回的数组中。由于这些虚假的对象,数组不能跨越从objects到Swift的桥梁;返回的数组以Swift格式键入为[UIDynamicItem],但是数组包含的不是UIDynamicItem对象。
扩建工程围绕着这座桥而不是过桥。我们停留在NSArray目标-C世界,过滤掉虚假的对象,然后跨过桥。
https://stackoverflow.com/questions/45774897
复制相似问题