1

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

我认为这是Foundation中的一个错误。

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'")
}
4

1 回答 1

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'")
}
于 2017-07-10T00:10:02.987 回答