在Objective-C中,我使用此代码删除任何子视图:
[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
Run Code Online (Sandbox Code Playgroud)
但是如何在swift中使用它呢?我看到苹果文档在swift中使用该方法
func makeObjectsPerformSelector(_ aSelector: Selector)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试它时,我收到一个错误: 'AnyObject[]' does not have a member named 'makeObjectsPerformSelector'
有没有办法删除swift中的子视图?
如果这解决了问题,这里是原始的Objective-C代码.
int x = (arc4random()%(int)(self.gameView.bounds.size.width*5)) - (int)self.gameView.bounds.size.width*2;
int y = self.gameView.bounds.size.height;
drop.center = CGPointMake(x, -y);
Run Code Online (Sandbox Code Playgroud)
我开始使用这段代码.第2行和第3行都很好,我稍后会介绍它们.
let x = CGFloat(arc4random_uniform(UInt32(self.gameView.bounds.size.width * 5))) - self.gameView.bounds.size.width * 2
let y = self.gameView.bounds.size.height
dropView.center = CGPointMake(x, -y)
Run Code Online (Sandbox Code Playgroud)
在Xcode 6 beta 3中,有必要将arc4random_uniform UInt32结果转换为CGFloat,以使减号和乘法起作用.这不再起作用,编译器显示错误:
'CGFloat'不能转换为'UInt8'
发行说明指出:
"CGFloat现在是一个独特的浮点类型,它包含32位体系结构上的Float或64位体系结构上的Double.它提供了Float和Double的所有相同的比较和算术运算,可以使用数字文字创建使用CGFloat可以将代码与代码完全隔离,对于32位是好的,但在构建64位时会失败,反之亦然.(17224725)
我只是在做类型的错误吗?我甚至不知道如何更好地描述这个问题,向Apple提交一个错误报告给beta 4.几乎我所拥有的每一个Swift项目都会受到这个问题的影响.所以我是寻找一些理智.
我正在编写一个在String对象上使用bridgeToObjectiveC()的应用程序.自Beta 5以来,这已不再可用.
我正在尝试这样做:
self.myList.filter{($0 as MyClass).name.bridgeToObjectiveC().localizedCaseInsensitiveContainsString(searchText)}
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
'String' does not have a member named 'bridgeToObjectiveC'
Run Code Online (Sandbox Code Playgroud)
Beta 5中的等效代码是什么?