ios - 转换非托管<AnyObject>!在 swift bool

标签 ios swift

我正在尝试获取现有 Objective C 类方法的结果,使用 performSelector

调用
let result = controlDelegate.performSelector("methodThatReturnsBOOL") as? Bool

我需要将这个结果转换为 Bool 类型的 Swift。

上面提到的代码,给出警告

"Cast from 'Unmanaged!' to unrelated type 'Bool' always fails"

即使方法返回 YES,结果也始终为“false”。

将结果转换为 Bool 有什么建议吗?

methodThatReturnsBOOL 的签名

- (BOOL)methodThatReturnsBOOL
{
    return YES;
}

最佳答案

这个问题已经很长时间没有得到解答了,所以我正在添加我一路上学到的东西。

转换 BOOL Objective C 方法返回的值,您可以简单地使用它进行转换,

if let result = controlDelegate.performSelector("methodThatReturnsBOOL") {
    print("true")
} else {
    print("false")
}

在这里您还可以将值 true/false 分配给 Swift Bool ,如果需要的话。

注意:我试过转换 Unmanaged<AnyObject>直接到Bool使用 takeRetainedValue()正如许多关于 SO 的答案所建议的那样,但这在这种情况下似乎不起作用。

关于ios - 转换非托管<AnyObject>!在 swift bool ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017888/

相关文章:

ios - 从文件中检索时图像会旋转

ios - 如何从 NSArray 访问属性?

ios - 屏幕挂起并终止

xcode - Swift - 从 userDefaults 保存和检索图像

swift - 在 UserDefaults 中保存自定义对象数组时出现 NSInvalidArgumentException

iphone - 将事件添加到 iPhone 中的默认日历

ios - 向圆圈添加模糊阴影

ios - 应用一段时间未使用后取消本地通知

ios - 如何快速打破 uilabel 线?

swift - 无法从存储的属性初始化程序引用协变 'Self' 类型