gpt4 book ai didi

swift - 在 Swift 1.1 的 NSURL 上实现 StringLiteralConvertible

转载 作者:行者123 更新时间:2023-11-28 09:15:50 27 4
gpt4 key购买 nike

Here是关于同一主题的较旧问题,但它适用于 Swfit 1.0。在 Swift 1.1 中,StringLiteralConvertible 协议(protocol)已更改为使用初始化器而不是类方法。此外,[NSURL init(string: String)] 成为可失败的初始化器。

这是我试过的,但它不能在 Xcode 6.1 中编译。

extension NSURL: StringLiteralConvertible {
convenience public init?(stringLiteral value: String) {
self.init(string: value)
}

convenience public init?(extendedGraphemeClusterLiteral value: String) {
self.init(string: value)
}

convenience public init?(unicodeScalarLiteral value: String) {
self.init(string: value)
}
}

最佳答案

协议(protocol)“StringLiteralConvertible”要求的初始化器不返回可选值,所以放一个 ?在 init 之后无济于事(即使 XCode 本身建议这样做)。但是 NSURL 的所有初始化器都会返回可选值,因为这些参数可能不会生成有效的 URL。并且您必须在所有自定义 NSURL 初始值设定项中调用 super.init 初始值设定项之一。因此不再可能让 NSURL 实现“StringLiteralConvertible”。

关于swift - 在 Swift 1.1 的 NSURL 上实现 StringLiteralConvertible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com