是否存在确定类型应可使用字符串初始化的协议?

Does a protocol exist that determines a type should be initializable with a String?

我编写了以下代码来帮助将文本值从表单字段转换为预期值:

protocol StringConvertableValueType {
    init?(_ string: String)
}

extension Int: StringConvertableValueType {
}

extension String: StringConvertableValueType {
}

extension Double: StringConvertableValueType {
}

extension Float: StringConvertableValueType {
}

如您所见,所有这些原始类型本身已经支持相同的初始化程序。然而倾注在 documentation 我找不到任何共享 protocol 这样做。虽然感觉我正在重新做一些已经被建立 Foundation 的人做过的事情。

是否已经存在某种 protocol 来解决这个问题,或者构建 Foundation 的人只是确保 API 确实一致,但没有强制执行的协议是吗?

我相信您正在寻找的是LosslessStringConvertibleInt 继承自 FixedWidthInteger。这种瞬态协议继承不会出现在符合类型的文档中。 (这可能会造成混淆,如果给您带来麻烦,您可能需要 open a radar 来扩展文档。)