首页 > 解决方案 > 声明一个只能包含 ASCII 字符的 Swift Character 类型?

问题描述

Swift 的Character数据类型非常广泛,我有一个用例,我需要声明一个只能保存 ascii 字符的变量。该类型不应接受 ascii 之外的字符。

我们还有其他适合我用例的内置数据类型吗?

还是我需要编写自定义解决方案?

如果它需要定制解决方案,实现它的最佳方法是什么?

标签: swiftencodingcharacter

解决方案


正如问题评论中所指出的,似乎无法检查编译时间。


运行时解决方案可能是:

您可以通过 检查 aCharacter是否为 Ascii <#Character#>.isASCII,然后您可以创建一个自定义类,该类仅在满足条件时才存储值。

struct CustomASCIIClass {

    private var storedValue : Character? = nil

    var value : Character? {
        get {
            return self.storedValue ?? nil
        }

        set (newValue) {
            if (newValue?.isASCII ?? false) {
                self.storedValue = newValue
            } else {
                // handle not possible value, throw something or make the variable to have nil value.
                print("invalid: ", newValue)
            }
        }
    }
}

用法:

var a = CustomASCIIClass()
a.value = Character("A")
print(a.value) // Optional("A")

var b = CustomASCIIClass()
b.value = Character("")
print(b.value) // nil


推荐阅读