- 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/
我有这个代码: enum Enum: String { case A = "A" } let s: String? = Enum(rawValue: "A") 当然,它不会编译。通常,我会这样
2015 年 8 月 28 日更新: 这将在 Swift 2 中解决 见 Twitter response from Swift compiler developer 2015 年 10 月 23 日
我正在评估 Multi-Tracker 示例,我想在条形码检测器可用后获取 RawValue。 一旦获得有效的 RawValue 并在其他地方使用该值,我想关闭 Tracker。 关于以下项目的任何建
我正在尝试Parcelize 一个数据类。它包含一个参数: var tokenType: Any? = null 对于这个变量,编译器在编译时提示: Type is not directly supp
考虑以下代码,我在其中声明了一个带有子枚举的 enum。 enum LocalizeKey { case message(Messages) case buttons(Buttons) enum Bu
我创建了一个非常简单的应用程序来限制您可以旋转 iPhone 的方向。在 ViewController 中,我重写方法 supportedInterfaceOrientations 如下: overr
嗯,老实说,我不喜欢在访问 enum 值时调用 rawValue。 我几乎一直都这样使用 enum,我认为调用 .rawValue 会降低我的代码的“可读性”: enum FontSize: CGFl
我有一个 Any? 类型的变量。我完全知道那个变量是 enum:String 的类型。我如何获得 rawValue 之类的东西: var somevar: Any? = someValue (some
我正在 Swift 中试验自定义运算符 (试验。我不需要讲授自定义运算符为什么不好) 我想,嗯,EnumType(rawValue:) 有点长.也许我可以找接线员解决这个问题?所以我写道: infix
我想到的一种方法是制定其他 Enum 必须遵守的协议(protocol)。 protocol StringRepresentable { var rawValue: String { get
今天我尝试在 Playground 中使用 OptionSet 进行一些操作,我注意到了这种模式 struct Activities: OptionSet { let rawValue:
我有以下枚举: enum Difficulty: Int { case Opt1 = 1, Opt2 = 2, Opt3 = 3 } 当我尝试像这样将它用作 Int 时:MyClass.
我正在使用 Xcode 6 的 playground 在 Swift 中尝试枚举: enum Rank: String { case One = "One", Two="Two" in
我想用一个嵌套枚举替换我的全局字符串常量,用于访问数据库中的列。 结构如下: enum DatabaseKeys { enum User: String { case Tabl
我有一个混合项目,遇到了一个有趣的问题。有一个枚举,在 obj-c 中定义 typedef NS_ENUM (NSUInteger, ABCCategory) { ABCCategoryFirst
我正在尝试在下面的结构中设置 var VendorIDDeviceID 的 rawValue。 struct vendor: Codable { var VendorIDDeviceID: S
我是一名初学者 Swift 开发人员,正在将我的应用程序迁移到 swift 3,但我无法修复此错误消息。实例成员“rawValue”不能用于类型“MessageComposeResult”你知道我的代
考虑这个枚举(注意它的类型是Int) enum MyTestEnum : Int{ case one = 1 case eight = 8 case unknown
我有一个枚举: enum switch : String { case on = "powerOn" case off = "powerOff" var ja
我正在查看 Swift 编程语言,我遇到了一个问题,我无法区分它是否是 Lauguage 的问题(我使用的是 Xcode 6.1 版(6A1052c)): enum Rank: Int { c
我是一名优秀的程序员,十分优秀!