Swift Beta 5不支持bridgeToObjectiveC

11

我正在编写一个应用程序,它在String对象上使用bridgeToObjectiveC()。自Beta 5以来,这不再可用。

我正在尝试做到这一点:

self.myList.filter{($0 as MyClass).name.bridgeToObjectiveC().localizedCaseInsensitiveContainsString(searchText)}

这使我产生了错误:

'String' does not have a member named 'bridgeToObjectiveC'

Beta 5中的等效代码是什么?


@MartinR 他在谈论数组,而我在谈论字符串。不是吗? - Patrick Bassut
1
问题是一样的(bridgeToObjectiveC不再可用),解决方案也是一样的(“...而是将其转换为/从适当的Foundation类型”)。 - Martin R
2个回答

16

使用as进行强制类型转换,以实现同样的效果:NSString

("string" as NSString).localizedCaseInsensitiveCompare("other string")

或者像这样使用可选链:

("string" as NSString?)?.localizedCaseInsensitiveCompare("other string")

3

尝试使用以下代码:

_bridgeToObjectiveC()

代替

bridgeToObjectiveC()

这样做可以提高可靠性。

self.myList.filter{($0 as MyClass).name._bridgeToObjectiveC().localizedCaseInsensitiveContainsString(searchText)}

1
Swift 2.0 修复了这个问题。而且这个行为是有效的。var yearlyWorkDays = workDaysTxt.text._bridgeToObjectiveC().float - Durul Dalkanat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接