尝试使用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'")
}
答案 0 :(得分:0)
根据this
似乎
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'")
}