首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Swift 4.2中,是否可以使用特定类型的rawValue为枚举编写默认扩展?

在Swift 4.2中,是可以使用特定类型的rawValue为枚举编写默认扩展的。

枚举是一种定义一组相关值的数据类型。在Swift中,枚举可以有关联的原始值(raw value),这些原始值可以是整数、浮点数、字符串或者布尔值。在使用枚举时,我们可以通过rawValue属性来访问枚举的原始值。

在Swift 4.2中,我们可以为枚举编写默认扩展,以便在创建枚举实例时使用特定类型的rawValue。默认扩展是指为一个类型添加额外的功能,而不需要修改该类型的定义。

下面是一个示例,展示了如何在Swift 4.2中使用特定类型的rawValue为枚举编写默认扩展:

代码语言:txt
复制
enum Direction: String {
    case north = "N"
    case south = "S"
    case east = "E"
    case west = "W"
}

extension Direction {
    init?(rawValue: Int) {
        switch rawValue {
        case 0:
            self = .north
        case 1:
            self = .south
        case 2:
            self = .east
        case 3:
            self = .west
        default:
            return nil
        }
    }
}

let direction = Direction(rawValue: 2) // 输出: Optional(Direction.east)

在上面的示例中,我们定义了一个枚举Direction,它的原始值类型是String。然后,我们为Direction编写了一个默认扩展,使其可以通过Int类型的rawValue来创建枚举实例。在默认扩展中,我们使用了一个switch语句来根据rawValue的值来初始化枚举实例。

通过这种方式,我们可以根据特定类型的rawValue来创建枚举实例,使得代码更加灵活和易于维护。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

腾讯云云服务器(CVM)是一种可扩展的计算服务,提供了弹性的虚拟服务器,可以满足不同规模和需求的应用程序。您可以根据实际需求选择不同配置的云服务器,并且可以根据业务需求随时调整配置。

腾讯云对象存储(COS)是一种安全、高可靠、低成本的云存储服务,适用于存储和处理各种类型的数据。它提供了简单易用的API接口和丰富的功能,可以满足不同场景下的存储需求。

您可以通过以下链接了解更多关于腾讯云云服务器(CVM)和腾讯云对象存储(COS)的信息:

腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm

腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift基础 枚举

枚举还可以定义初始化器以提供初始大小写值;可以扩展其功能,使其功能超出原始实现;并且可以遵守协议以提供标准功能。 有关这些功能的更多信息,请参阅属性、方法、初始化、扩展和协议。...您可以使用case关键字来引入新的枚举案例。 注意 与C和Objective-C等语言不同,Swift枚举案例默认没有设置整数值。...您通过在枚举名称后写入:CaseIterable来启用此功能。Swift将所有案例的集合公开为枚举类型的allCases属性。...原始值 关联值中的条形码示例显示了枚举案例如何声明它们存储不同类型的关联值。作为关联值的替代品,枚举情况可以预先填充默认值(称为原始值),这些值都是同一类型。...当您首次在代码中定义枚举时,原始值设置为预填充值,如上面的三个ASCII代码。特定枚举情况的原始值始终相同。当您根据枚举的一个情况创建新常量或变量时,会设置关联值,并且每次这样做时都可能不同。

10200

Swift 面向对象解析(一)

在Swift的类、结构体、枚举中都可以定义(属性、方法、下标、构造体、嵌套类型),下面我们一个一个的用我小小的认识说一下它们,我也会给大家一些我看到的很不错的博客链接,方便大家更好的掌握,理解Swift...Swift枚举和 C,OC 枚举的区别: Swift的枚举成员不会被分配一个默认的整数值,它的枚举名本身就是一个枚举实例和整数值之间可没有任何的关系。...3 : 如果将存储属性的类型申明为可选类型,系统就可以将这些属性的初始值设置为 nil (大家一定注意,Swift的nil和OC的nil完全不一样,Swift的nil是一个确定的值,叫缺失值,而OC的nil...上面的形参名是Swift隐式为它们提供的,你可以在方法中直接调用,扣上面字眼去理解它们的定义和使用; var nameString = ""{ willSet{...使用static 或者 class 修饰的方法属于该类型的类方法,是可以使用该类型本身来调用。class 一般是在类里面修饰, static 一般用在结构体和枚举中修饰。

1.8K70
  • IOS-swift5.1快速入门之旅

    如果你用C或Objective-C编写代码,这个语法看起来很熟悉 - 在Swift中,这行代码是一个完整的程序。您无需为输入/输出或字符串处理等功能导入单独的库。...在全局范围编写的代码用作程序的入口点,因此您不需要main()函数。您也不需要在每个语句的末尾写分号。 本导览通过向您展示如何完成各种编程任务,为您提供了足够的信息来开始在Swift中编写代码。...您还可以使用字符串或浮点数作为枚举的原始类型。使用该rawValue属性可以访问枚举案例的原始值。 使用init?(rawValue:)初始化程序从原始值创建枚举的实例。...添加absoluteValue属性的类型编写扩展名。...无论函数是否抛出错误,都会执行代码。您可以使用defer彼此相邻的编写和清除代码,即使它们需要在不同时间执行。

    2.1K20

    窥探Swift之别样的枚举类型

    { 3 case Cat, Dog, Cow, Duck, Sheep 4 }   二、枚举类型的使用     定义完枚举类型就是为了使用的对吧,直接使用枚举类型声明变量即可, 在Swift中是不需要...typedef来定义枚举类型的,我们可以直接使用枚举类型。...举个例子,以上面的枚举类型City为例,假如我们只知道一个枚举成员的值是“北京”,而不知道“北京”这个值对应的枚举成员是"Beijing", 在Swift中是可以通过“北京”这个值给枚举变量赋一个枚举成员...原因很简单,我们不确定枚举City中的成员的值是否含有“北京”,枚举变量youInCity的值是不确定的,所以喽是可选类型的,下面我们就取出youInCity的值,首先判断youInCity是否为City.Beijing...= City(rawValue: "京"); // testCity为nil println(testCity)   五、枚举值自增     好东西还是要保留的,在Swift中的枚举值如果是整数的话,

    1K70

    swift 枚举(枚举关联值、枚举原始值、递归枚举等)

    :Swift枚举在创建时未分配默认整数值。...相反,这些值的类型是已经明确定义好的Season类型 枚举使用 当season的类型已知时,再次为其赋值可以省略枚举类型名 var season = Season.spring print(season...原始值是在定义枚举时被预先填充的值。对于一个特定的枚举成员,它的原始值始终不变。关联值是创建一个基于枚举成员的常量或变量时才设置的值,枚举成员的关联值可以变化。...case summer case autumn case winter } 使用枚举成员的rawValue属性可以访问该枚举成员的原始值 print(Season.spring.rawValue...) 使用原始值初始化枚举实例 可以通过rawValue初始化一个枚举成员,返回值则是枚举成员或nil 可以通过这个来判断这个新枚举成员是否在枚举值中 enum Season:Int { case

    36710

    Swift教程(八)--枚举

    ,在 Swift 中,我们都必须对枚举类型下的每个值,指定确定的行为。...关联值(Associated Values) 在 Swift 中,我们还可以定义这样的枚举类型,它的每一个枚举项都有一个附加信息,来扩充这个枚举项的信息表示,这又叫做关联值。...这样我们在初始化枚举类型的时候,我们就可以根据每个枚举项的关联值类型,为它指定附加信息了: var rect = Shape.Rectangle(CGRect(x: 1, y: 1, width: 100...原始值(Raw Values) 我们刚刚了解了关联值类型的枚举的使用,Swift 的枚举类型还提供了另外一个叫做原始值(Raw Values)的实现。...Sunday" } 还是表示星期的枚举类型,我们对每个枚举项都定义了一个默认的原始值,注意一下我们定义枚举的第一行代码,enum WeekDayWithRaw : String 我们在枚举定义的最后,

    61720

    Swift基础 嵌套类型

    Swift基础 - 嵌套类型 翻译自:https://docs.swift.org/swift-book/LanguageGuide/NestedTypes.html 创建枚举通常是为了支持特定类或结构的功能...同样,可以方便地定义纯属实用程序类和结构,以便在更复杂类型的上下文中使用。为了做到这一点,Swift使您能够定义嵌套类型,从而在它们支持的类型的定义中嵌套支持枚举、类和结构。...在二十一点中,Ace卡的价值为1或11。...description属性使用可选绑定来检查是否有第二个值要显示,如果是,则为第二个值插入额外的描述细节。...提及嵌套类型 要在其定义上下文之外使用嵌套类型,请在其名称前加上嵌套在其中的类型名称: let heartsSymbol = BlackjackCard.Suit.hearts.rawValue //

    10400

    Swift基础语法简化版(续)

    这就是Swift中的枚举类型推断。 枚举的原始值 在C/OC中,枚举的本质就是整数。所以C/OC的枚举是有原始值的,并且默认是从0开始。...Swift中的枚举是没有原始值的,但是可以在定义的时候告诉系统让枚举有原始值。...关于设置Swift中枚举的原始值,需要注意以下几点: 如果原始值是String类型,则原始值是区分大小写的 通过 rawValue 可以获取原始值 通过 rawValue 返回的枚举是一个可选型,因为原始值对应的枚举值不一定存在...Swift中的扩展类似于OC中的分类。 扩展可以做的事情: 添加计算属性 定义方法 使现有类型遵循某种协议 在Swift中,使用extension关键字来实现扩展。...、枚举中使用泛型,在协议中是不可以这样使用的。

    1.6K20

    Swift学习:构造器(下)

    //2.可失败构造器其实是在构造失败时创建一个类型为自身类型的可选类型的对象。 } 二、枚举类型可失败的构造器 通过枚举类型可失败构造器获取枚举类型中特定的枚举成员,完成构造任务。...,swift中还可以使用带原始值的枚举类型可失败构造器。...(rawValue:),这里名为rawValue的参数,其类型和枚举类型的原始值类型一致, 如果该参数的值能够和某个枚举成员的原始值匹配,则该构造器会构造相应的枚举成员,否则构造失败。...= TestNum2(rawValue: "6") if number == nil{ print("枚举类型构造失败")//此句被打印 }``` 三、构造失败的传递 与普通的构造器相似,可失败构造器也是可以代理的...在构造过程中,我们可以使用闭包或全局函数为某个存储型属性提供定制的默认值。

    80970

    Swift系列四 - 枚举

    :public typealias Void = () 二、枚举 Swift枚举和C/OC语言不一样,以前写OC的时候枚举本质是int类型,但Swift中枚举可以是多类型的。...原始值 枚举成员可以使用相同类型的默认值预先关联,这个默认值叫做:原始值。...) // 输出:w print(Direction.down.rawValue) // 输出:s 如果枚举的原始值类型是Int、String,Swift会自动分配原始值: enum Direction...递归枚举 关键字:indirect; 可以把需要递归枚举的成员前面加indirect,也可以为了方便直接加到枚举定义前面。...在Swift中查看内存占用大小及对齐方式使用枚举:MemoryLayout: size:实际用到的空间大小 stride:分配占用的空间大小 alignment:内存对齐方式 下面的意思是,Int在内存中占用

    52710

    开关组件对比

    这种情况下,做法是启动的时候调用服务端的接口,在返回的接口数据中存储对应的值,使用时直接获取存储的值。...通过Swift protocol定义了ToggleType和TogglesDataStoreType两个协议,并定义两个方法,判断开关是否打开、以及更新开关状态 // TogglesDataStoreType.swift...BuildTargetToggle: ToggleType { // 此处可以注意使用系统关键字之后的写法 case debug, `internal`, production } struct...userDefaults.register方法的使用,赋默认值 self.userDefaults.register(defaults: [ InternalToggle.isLikeButtonForMomentEnabled.rawValue...) } } 远程开关的实现: 定义一个枚举,RemoteToggle继承自String和ToggleType,定义String也是为了使用key,每增加一种类型,只需要在enum添加case。

    95811

    Swift讲解专题九——枚举 原

    Swift讲解专题九——枚举 一、引言         在Objective-C语言中,没有实际上是整型数据,Swift中的枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立的类型来使用,也可以为其分配值...二、枚举语法         Swift中enum关键字来进行枚举的创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum...则枚举类型可以省略 myName = .李 var myName2:Surname = .王 同样可以将枚举值都写在同一个case中,使用逗号分隔: enum Planet { case Mercury...四、枚举的原始值         原始值也可以理解为为枚举设置一个具体类型,示例如下: enum Char:String { case a = "A" case b = "B"...= Char(rawValue:1) 在通过原始值进行枚举对象创建的时候,有可能创建失败,例如传入的原始值并不存在,这时会返回Optional值nil。

    44620

    万字长文|Swift语法全面解析|附示例

    Swift 内置支持检查 API 可用性,编译器使用 SDK 中的可用信息来验证我们的代码中使用的所有 API 在项目指定的部署目标上是否可用。...枚举语法,使用 Switch 语句匹配枚举值,枚举成员的遍历,关联值,原始值(默认值),递归枚举(indirect) 可以定义 Swift 枚举来存储任意类型的关联值,每个枚举成员的关联值类型可以各不相同...可以在一个类,结构体或是枚举类型的定义中,添加一个或多个可失败构造器。其语法为在 init 关键字后面添加问号(init?)。...Swift 允许定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。...扩展可以给现有的类型添加新的构造器。 扩展可以给现有类型添加新的实例方法和类方法。 扩展可以给现有的类型添加新的下标。 扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型。

    3.7K22

    【学习笔记】SWIFT中的构造函数

    扩展应用翻阅的,蛮方便!...另外,代码我用 IBM 提供的在线 Swift 代码编写运行交互网站: IBM Swift Sandbox ?...myVariable = "abc" } } let instance = MyClass() 你可以不要定义构造函数,比如变量都已经有默认值没有必要自定义构造函数,那么我们可以使用默认构造函数...rawValue 参数的构造函数,仅此一个,注意:这个构造函数还是个可失败构造函数,学过 Java 的朋友都知道,构造函数可以抛出异常,在 Swift 中可以直接让实例化失败返回 nil ,那就是:...另外要指出的是,可以直接定义便利构造器,你只需要访问默认的指定构造器就可以了,注意注释部分重复定义的错误提示哦: ?

    1.2K20

    Swift解读专题一——Swift2.2语言预览

    三、常量与变量         常量和变量是编程语言中最基础的两类数据类型,常量可以理解为为某个值起一个特定的名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用的量值。...运算符用来为optional类型的值设置一个默认值,如果optional值为nil,则会使用后面设置的默认值来代替。         ...        Swift中的枚举和C与Objective-C有很大的差别,在Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。... three     case Fir,Sec,Thr } var em = MyEnum.one.rawValue 如果原始值是Int类型,则默认从0开始依次递增,开发者也可以手动设置每个枚举值的原始值...des()         Swift中的枚举也可以添加附加值,在switch语句中取到对应的枚举类型后,可以获取开发者设置的附加值进行逻辑处理,示例如下: enum MyEnum { //为这个类型天啊及一组附加值

    2.1K20

    使用 Swift 提高代码质量

    相比Any可以更多利用编译时检查发现类型问题。 Enum关联类型 - 通过给特定枚举指定类型避免使用Any。...线程安全 值类型 - 更多使用值类型减少在多线程中遇到的数据竞争问题 async/await - 提供async函数使我们可以用结构化的方式编写并发操作。...使用枚举关联值代替Any 例如使用枚举改造NSAttributedStringAPI,原有APIvalue为Any类型无法限制特定的类型。...有时候我们会通过给予可选值默认值的方式来处理。但是这里应考虑在什么场景下可以给予默认值。在不能给予默认值的场景应当及时使用return或抛出异常,避免错误的值被传递到更多的业务流程。...在可以使用兜底逻辑的场景使用默认值,例如默认文字/文字颜色。

    4.7K30

    Swift3.0 - 枚举

    } b.单行写法 enum CompassPoint { case north,south,ease,west } 提示: Swift 3.0 开始,定义枚举值,统一小写 指定枚举类型的原始数据类型...) } } } 注意 枚举类型可以Int String等基本类型的值,对象是不可以的,官方说必须是实现RawRepresentable 协议的类型才可以 使用 let..." case west = "4" } 提示: 你认为上面这样定义是否是正确的,答案是否定的,因为系统不知道你枚举的原始值是什么类型的,这里系统没有进行类型推断,所有我们要给枚举添加原始值之前...重新实现SWIFT标准库的可选类型(使用泛型技术) enum OptionalValue { case none case some(Wrapped) } var possibleInteger...if locale == Locale.base { }// 错误的判断方式 编译错误,如果没有 case language(String) 这种赋值枚举,可以使用上面的方式,一点问题也没有,但是如果有这种类型

    43220

    Swift基础 初始化

    此过程涉及为该实例上的每个存储属性设置初始值,并在新实例准备使用之前执行所需的任何其他设置或初始化。 您通过定义初始化器来实现此初始化过程,初始化器就像可以调用以创建特定类型的新实例的特殊方法。...注意 如果您希望自定义值类型可以使用默认初始化器和成员初始化器初始化,也可以使用您自己的自定义初始化器初始化,请在扩展中编写自定义初始化器,而不是作为值类型原始实现的一部分。...您可以定义一个方便初始化器,以调用与方便初始化器同一类的指定初始化器,其中指定初始化器的一些参数设置为默认值。您还可以定义一个方便的初始化器,为特定的用例或输入值类型创建该类的实例。...您可以通过在init关键字(init?)后放置问号来编写一个失败的初始化器。 注意 您无法使用相同的参数类型和名称定义故障和非故障初始化器。 故障初始化器会创建其初始化类型的可选值。...(rawValue:)它接受一个名为rawValue的适当原始值类型的参数,如果找到匹配枚举情况,则选择匹配枚举情况,如果没有匹配值,则触发初始化失败。

    17600

    iOS使用IconFont

    IconFont的使用 github链接 背景: 最近设计提了要求,切图用IconFont 一开始,在搜了IconFont的使用后,选中了TBCityIconFont,使用了之后,发现对于图片的支持不太好...然后就pass了,换了另一个Swift的Iconic的第三方库,这个库有个好处,是可以自动把.ttf文件里的Icon生成一个枚举使用的时候特别方便。...有兴趣的可以自己看参考链接,其实就是参考链接里内容的整合。 实现 首先,我想要的是,传入一个Int类型(eg: 0xe654)或者字符串类型(eg :\u{E61A})都支持。...本地文件每次收入unicode吗不方便,定义两个枚举类型,一个是enum string,一个是enum UInt32,定义UInt32是为了可以兼容OC。...Code example in Swift 3. iconfont怎么在iOS中使用了 Iconfont-阿里巴巴矢量图标库 github Iconic

    1.6K32
    领券