- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为 RawRepresentable 创建一个带有可选参数的通用可失败初始化程序,基本上是这个 https://www.natashatherobot.com/swift-failable-enums-with-optionals/
有几个方法被提出,其中一个是这个(编辑:修复了第二个子句中的 let
):
extension RawRepresentable {
init?(rawValue optionalRawValue: RawValue?) {
guard let rawValue = optionalRawValue, let value = Self(rawValue: rawValue) else { return nil }
self = value
}
}
从这里https://gist.github.com/okla/e5dd8fbb4e604dabcdc3
我不知道它是否曾经在 Swift 2 上工作,但我无法在 Swift 3 上编译它。我得到:
Command failed due to signal: Segmentation fault: 11
有没有办法让它工作?
附言我从这篇文章及其评论中了解到其他方法。
编辑:修复了损坏的复制/粘贴代码。
最佳答案
我刚刚将您的代码复制并粘贴到 Playground 中,我遇到的唯一错误是在 guard< 中分配
声明。value
之前缺少 let
/
您确定段错误是因为这个扩展吗?
这是适合我的代码(Xcode 8.2.1、Swift 3.0.2):
extension RawRepresentable {
init?(rawValue optionalRawValue: RawValue?) {
guard let rawValue = optionalRawValue, let value = Self(rawValue: rawValue) else { return nil }
self = value
}
}
-- 编辑 --
在用原始值定义了一个枚举
之后,我得到了一个错误。
添加这个会使 Playground 崩溃:
enum Counter: Int {
case one = 1, two, three, four, five
}
通过将 init?
中的参数重命名为 init?(optRawValue optionalRawValue: RawValue?)
修复了此问题。我猜问题是你在 init?
中调用了 Self(rawValue: rawValue)
,而编译器不知道使用哪一个...
关于 swift 。具有可选 RawValue 的 RawRepresentable init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42373485/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!