我有一个来自服务器的值,它被保存到NSString
变量中(服务器有时将它作为字符串返回,有时作为布尔值返回)。
请假定无法更改此部分代码。
当我将Objc部分重写为Swift 4时出现了问题
我在Objc中拥有的代码:
[data.isActive boolValue]
在swift 4中,由于String中没有.boolValue
表示法而导致失败,您只能使用Bool()
语法将String转换为bool。并且由于该值不是真实的字符串,因此调用Bool()
会在崩溃时解决,因为CFBoolean unrecognized selector
是因为它是从String强制包装而来的。
有没有什么办法可以克服这些问题而又不退缩那些包装这些转换的Objc代码呢?
它甚至无法将那些类型的值分配给任何swift对象。
答案 0 :(得分:0)
0
,"0"
,"NO", ``false
,"false"
甚至{{1}的BOOL角度来看, Objective-C对类型非常不敏感 }为nil
,其他所有内容均视为false
。这就是true
具有NSString
属性的原因。它只返回boolValue
。
Swift是一种强类型语言。您必须检查类型:
value != 0