相关疑难解决方法(0)

什么是makeObjectsPerformSelector的快速等价物?

在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中的子视图?

xcode ios swift

34
推荐指数
1
解决办法
9017
查看次数

'CGFloat'不能转换为'UInt8'和其他CGFloat问题与Swift和Xcode 6 beta 4

如果这解决了问题,这里是原始的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项目都会受到这个问题的影响.所以我是寻找一些理智.

xcode operator-overloading type-conversion cs193p swift

13
推荐指数
1
解决办法
1万
查看次数

bridgeToObjectiveC在Swift Beta 5上不可用

我正在编写一个在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中的等效代码是什么?

swift ios8

11
推荐指数
1
解决办法
3232
查看次数