【发布时间】:2017-09-28 13:40:48
【问题描述】:
Q.1 为什么“Any”没有成员“removeFromSuperview”?
Q.2 为什么说将 'Any' 转换为 'AnyObject' 或使用 'as!'强制向下转换为更具体的类型来访问成员?
var allImgViews = [Any]()
viewDidLoad(){
// sample code
for v in 0..<4 {
myImageView.image = UIImage(named: something)
allImgViews.append(myImageView)
}
allImgViews[0].removeFromSuperview()
}
感谢任何帮助
【问题讨论】:
-
因为
Any的字面意思是any。是什么阻止您将Int值 0 放入该数组中,然后尝试调用removeFromSuperView呢?程序应该如何决定做什么? -
myImageView来自哪里? -
myImageView 是以编程方式创建的;类似于 let myImageView = UIImageView(frame: CGRect(x: CGFloat(), y: CGFloat(192), width: CGFloat(98), height: CGFloat(94)))
-
@Amrit 而不是
var allImgViews = [Any](),您只需使用var allImgViews = [UIImageView]()。所以removeFromSuperview()会知道allImgViews是UIImageView的数组,它允许你使用那个方法。 -
@Amrit 不需要
CGFloat构造函数。CGRect始终将其成员存储为CGFloat。
标签: ios swift xcode uiviewcontroller swift3