有没有办法阻止 UILabel 作为 UIView 进行类型检查?
Is there a way to prevent UILabel from type checking as UIView?
在我的应用程序中,我使用 as
运算符来检查我正在使用的 UI 元素的类型。我 运行 遇到 UILabel 作为视图成功检查的问题。
let label = UILabel()
label.text = "some text"
if let myLabel = label as? UIView {
print("its a view ") // succeeds
}
我还收到警告:
warning: Conditional cast from 'UILabel' to 'UIView' always succeeds.
问题
有没有办法为此 as
检查添加约束,从而导致此检查按预期失败?
试试这个:
if label.isMemberOfClass(UIView.self) {
print("its a view ") // succeeds
}
isMemberOfClass
检查 UIView
并且没有从它继承的 类
这是另一种方法,这是我在尝试检查通用 (T
) 时针对我的特定情况需要的方法。由于我没有在问题中指定,我不会接受这个作为答案,但这是解决方案:
if let label = obj as? UILabel where label.isMemberOfClass(UILabel.self) {
// ...
}
if let view = obj as? UIView where view.isMemberOfClass(UIView.self) {
// ...
}
在我的应用程序中,我使用 as
运算符来检查我正在使用的 UI 元素的类型。我 运行 遇到 UILabel 作为视图成功检查的问题。
let label = UILabel()
label.text = "some text"
if let myLabel = label as? UIView {
print("its a view ") // succeeds
}
我还收到警告:
warning: Conditional cast from 'UILabel' to 'UIView' always succeeds.
问题
有没有办法为此 as
检查添加约束,从而导致此检查按预期失败?
试试这个:
if label.isMemberOfClass(UIView.self) {
print("its a view ") // succeeds
}
isMemberOfClass
检查 UIView
并且没有从它继承的 类
这是另一种方法,这是我在尝试检查通用 (T
) 时针对我的特定情况需要的方法。由于我没有在问题中指定,我不会接受这个作为答案,但这是解决方案:
if let label = obj as? UILabel where label.isMemberOfClass(UILabel.self) {
// ...
}
if let view = obj as? UIView where view.isMemberOfClass(UIView.self) {
// ...
}