我试图获得一个现有Objective C类的方法的结果,使用performSelector调用
let result = controlDelegate.performSelector("methodThatReturnsBOOL") as? Bool
Run Code Online (Sandbox Code Playgroud)
我需要将此结果转换为Bool类型的Swift.
上面提到的代码给出了警告
"从'未经管理!'演员阵容 不相关的类型'Bool'总是失败"
并且结果总是"假",即使该方法返回YES.
有关将结果转换为Bool的建议吗?
methodThatReturnsBOOL的签名
- (BOOL)methodThatReturnsBOOL
{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
已经有很长一段时间了,因为这仍然没有答案,所以我正在添加我在学习过程中学到的东西.
要转换BOOLObjective C方法返回的值,您只需使用,
if let result = controlDelegate.performSelector("methodThatReturnsBOOL") {
print("true")
} else {
print("false")
}
Run Code Online (Sandbox Code Playgroud)
Bool如果需要,您还可以在此处将值true/false分配给Swift .
注意:我尝试Unmanaged<AnyObject>直接Bool使用takeRetainedValue()SO上的许多答案建议使用,但这似乎在这种情况下不起作用.
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |