Ios 干净地将Objective-C布尔值转换为Swift布尔值?
有没有一个简单的方法可以做到这一点,我错过了?现在我是这样做的:Ios 干净地将Objective-C布尔值转换为Swift布尔值?,ios,objective-c,swift,Ios,Objective C,Swift,有没有一个简单的方法可以做到这一点,我错过了?现在我是这样做的: let doesConformNumber: NSNumber = NSNumber(unsignedChar: UTTypeConformsTo(utiCF, typeCF)) if doesConformNumber.boolValue { return true } 如果我尝试这样做一个简单的演员阵容: let testBool: Bool = UTTypeConformsTo(utiCF, typeCF) 我发
let doesConformNumber: NSNumber = NSNumber(unsignedChar: UTTypeConformsTo(utiCF, typeCF))
if doesConformNumber.boolValue {
return true
}
如果我尝试这样做一个简单的演员阵容:
let testBool: Bool = UTTypeConformsTo(utiCF, typeCF)
我发现错误“Boolean”不能转换为“Bool”
任何人都有更干净的转换方法吗?UTTypeConformsTo()
返回一个Boolean
,它是Int8
的类型别名,而不是直接返回
可转换为Bool
。最简单的方法是
let testBool : Bool = UTTypeConformsTo(utiCF, typeCF) != 0
如果实际上不需要类型注释:
let testBool = UTTypeConformsTo(utiCF, typeCF) != 0
让testBool=doesConformNumber.boolValue
不够?检查后的答案更清晰,这就是我想要的。注意UTTypeConformsTo
返回一个CoreFoundation布尔值,boolean
;Objective-C布尔值是BOOL
。这个问题很好,总结只是有点误导。但对于搜索来说,这可能是一种很好的方式请注意,在这个问题提出后的几年中的某个时候,苹果改变了Swift公开UTTypeConformsTo
的方式,因此它返回了一个本地SwiftBool
。现代Swift不需要转换。布尔和布尔有什么区别?@jawanam:Boolean
是一种“历史Mac类型”,定义为Int8
Bool
是Swift布尔类型。比较。所以只要可能,它就应该使用布尔对布尔?