xcode 什么是 makeObjectsPerformSelector 的 swift 等价物?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24446372/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What is the swift equivalent of makeObjectsPerformSelector?
提问by yumugee
In Objective-C I'm using this code to remove any sub-views:
在 Objective-C 中,我使用此代码删除任何子视图:
[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
But how to use it in swift? I saw apple documentationto use that method in swift
但是如何快速使用它呢?我看到苹果文档在 swift 中使用该方法
func makeObjectsPerformSelector(_ aSelector: Selector)
but when I try it, I get an error: 'AnyObject[]' does not have a member named 'makeObjectsPerformSelector'
但是当我尝试时,我收到一个错误: 'AnyObject[]' does not have a member named 'makeObjectsPerformSelector'
Are there any ways to remove sub-views in swift?
有什么方法可以快速删除子视图?
回答by rob mayoff
Updated for Swift 2.0 (Xcode 7)
为 Swift 2.0 (Xcode 7) 更新
Use forEach
:
使用forEach
:
self.view.subviews.forEach { subview in
subview.removeFromSuperview()
}
Or like this:
或者像这样:
view.subviews.forEach { let ar: NSArray = [obj1, obj2, obj3]
ar.makeObjectsPerformSelector("someSelector")
.removeFromSuperview() }
回答by Bruce1q
It only works on NSArray and NSMutableArray objects.
它只适用于 NSArray 和 NSMutableArray 对象。
This will work:
这将起作用:
let anNSArray: NSArray = anArrayOfAnyObject
anNSArray.makeObjectsPerformSelector( "someSelector")
Note that if you have an Array<AnyObject>
you can freely convert to NSArray
and vise versa.
请注意,如果您有 ,则Array<AnyObject>
可以自由转换为NSArray
,反之亦然。
回答by FizzBuzz
As of Xcode 7, the full family of performSelector methods are available in Swift, including makeObjectsPerformSelector()
for NSArray
.
从 Xcode 7 开始,Swift 中提供了完整的 performSelector 方法系列,包括makeObjectsPerformSelector()
for NSArray
.