我正在尝试获取现有 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/