崩溃 (EXC_BAD_ACCESS) 使用 CharacterSet isSuperset



尝试使用CharacterSet确定输入字符串是否为有效的电话号码。似乎isSubset工作正常,但isSuperset会崩溃。

我认为这是基金会中的一个错误。

let phoneNumberCharacterSet = CharacterSet(charactersIn: "01234567890,;*+#").union(CharacterSet.whitespaces)
let zeroCharacterSet = CharacterSet(charactersIn: "0")
if zeroCharacterSet.isSubset(of: phoneNumberCharacterSet) {
print("zero is a subset of the phone number set")
}
if phoneNumberCharacterSet.isSuperset(of: zeroCharacterSet) {
// will never get here due to crash
print("is a superset of '0'")
}

根据这个

似乎当前的CharacterSet桥产生了一些奇怪的东西 这不适用于isSuperset(of:).(它在内部调用CFCharacterSetIsSupersetOfSet(_:_:).(

你可以得到

if phoneNumberCharacterSet.isSuperset(of: zeroCharacterSet) {
// will never get here due to crash
print("is a superset of '0'")
}

替换为

let zeroString = "0"
if zeroString.rangeOfCharacter(from: phoneNumberCharacterSet.inverted) == nil {
print("is a superset of '0'")
}

相关内容

  • 没有找到相关文章

最新更新