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

为什么Data.append(_:)不接受Swift for iOS中类型为Int的枚举的rawValue?

Data.append(_:)方法是用于向Data对象中添加数据的方法。它接受一个参数,该参数的类型是一个遵循DataProtocol协议的对象。DataProtocol协议定义了一种数据类型,该类型可以用于表示二进制数据。

在Swift中,枚举类型可以有关联值,这些关联值可以是不同的类型。例如,我们可以定义一个枚举类型,其关联值可以是Int类型或String类型。当我们使用枚举类型的rawValue属性时,它返回枚举值的原始值,该原始值的类型与枚举类型的关联值类型相同。

然而,Data.append(:)方法只接受遵循DataProtocol协议的对象作为参数,而Int类型的枚举的rawValue属性返回的是一个Int值,而不是遵循DataProtocol协议的对象。因此,当我们尝试将Int类型的枚举的rawValue作为参数传递给Data.append(:)方法时,编译器会报错。

为了解决这个问题,我们可以将Int类型的枚举的rawValue转换为遵循DataProtocol协议的对象。例如,我们可以将Int值转换为Data类型,然后将该Data对象作为参数传递给Data.append(_:)方法。

以下是一个示例代码:

代码语言:swift
复制
enum MyEnum: Int {
    case value1 = 1
    case value2 = 2
}

let myEnum = MyEnum.value1
let rawValue = myEnum.rawValue

let data = Data(bytes: &rawValue, count: MemoryLayout<Int>.size)
var myData = Data()
myData.append(data)

在上面的示例中,我们首先定义了一个枚举类型MyEnum,其原始值类型为Int。然后,我们创建了一个MyEnum类型的实例myEnum,并获取了其rawValue。接下来,我们将rawValue转换为Data类型,并将其添加到myData中。

需要注意的是,这只是一种将Int类型的枚举的rawValue添加到Data对象的方法之一。具体的实现方式可能因具体的业务需求而异。在实际开发中,我们可以根据具体情况选择合适的方法来处理这个问题。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

窥探Swift之别样枚举类型

Swift枚举不仅保留了大部分编程语言中枚举特性,同时还添加了一些好用而且实用新特性,在本篇博客中将领略一些Swift枚举类型魅力。   有小伙伴会问,不就是枚举么,有什么好说。...举个例子,以上面的枚举类型City例,假如我们只知道一个枚举成员值是“北京”,而不知道“北京”这个值对应枚举成员是"Beijing", 在Swift是可以通过“北京”这个值给枚举变量赋一个枚举成员...rawValue println(cityName) //输出:北京 }     找一个枚举成员不包含字符串用来给枚举变量赋值,观察一下结果,下面的testCity值打印出来nil,...因为枚举没有一个成员“京”。...= City(rawValue: "京"); // testCitynil println(testCity)   五、枚举值自增     好东西还是要保留,在Swift枚举值如果是整数的话,

96970

SwiftUI:“看我展示52张扑克牌,很快啊!”

思路 使用 SwiftUI 创建 UI 结构; 使用 swift 枚举和结构体实现数据生成,通过 viewModel 整合数据用于展示(交互暂时未做,因此不涉及 MVVM 设计模式数据绑定)。...//CaseIterable:当需要对枚举进行遍历时,需要遵守 CaseIterable 协议,然后对枚举 allCases 类属性进行遍历即可 enum Rank:Int, CaseIterable...{ case ace = 1 //未指定确定值类别,默认值是“依次”加1,因此,two rawValue 2,three rawValue 3,以此类推...语法在构建数据类型时比 OC 方便太多了,枚举和结构体(值类型,copy-on-write)都很强大。...距离 APP 支持最低版本 iOS13 应该也不远了(微信目前最低支持 iOS11.0),iOSer 们,是时候学习一波 SwiftUI 了!随便再温习下 swift 相关语法。

95950

Swift系列四 - 枚举

fn(10, 5) // 输出:5 Void本质就是空元祖别名:public typealias Void = () 二、枚举 Swift枚举和C/OC语言不一样,以前写OC时候枚举本质是int...类型,但Swift枚举可以是多类型。...) // 输出:w print(Direction.down.rawValue) // 输出:s 如果枚举原始值类型Int、String,Swift会自动分配原始值: enum Direction...在Swift查看内存占用大小及对齐方式使用枚举:MemoryLayout: size:实际用到空间大小 stride:分配占用空间大小 alignment:内存对齐方式 下面的意思是,Int在内存占用...内存只会把对应成员值(序号)存下来,这时候1个字节足够用了,和枚举类型无关(不管是Int还是String枚举都是占用一个字节)。

48310

Swift 面向对象解析(一)

Swift 不简单,你说简单估计是因为你也只研究到 print("Hello World"),哈哈......         在Swift枚举和结构体是值类型,类是引用类型。...比如下面的例子:         给大家看看我们在OC是怎么定义枚举,大家对比着理解: /** 发送消息类型 */ enum ZxMessageType: Int { case...Swift 枚举,你应该了解东西 Swift 枚举高级用法及实践  二:类和结构体           把这两个放在一起,纯粹是因为这两个太像了,我们先把区别罗列出来,剩下两者都一样。          ...3 : 如果将存储属性类型申明为可选类型,系统就可以将这些属性初始值设置 nil (大家一定注意,Swiftnil和OCnil完全不一样,Swiftnil是一个确定值,叫缺失值,而OCnil...其实你掌握了可选类型使用,可选链就没什么难度了,下面具体用法下面链接讲很清楚: Swift 可选链  八:构造器 构造器用于完成实例构造过程,这个过程包括实例每个存储属性社会中初始值和执行必要准备和初始化任务

1.7K70

【学习笔记】SWIFT构造函数

【学习笔记】SWIFT构造函数 2017-05-05 by Liuqingwen | Tags: Swift | Hits ?...一、前言 2017 年才接触苹果相关东西,打算学习 Apple iOS 开发,无 Objective-C 基础,目前正在努力学习 SWIFT 过程。...二、语言 SWIFT 构造函数基本要点 SWIFT 构造函数用于结构体、枚举和类:struct, enum, class ,作为实例初始化,它基本语法是 init 函数: class MyClass...rawValue 参数构造函数,仅此一个,注意:这个构造函数还是个可失败构造函数,学过 Java 朋友都知道,构造函数可以抛出异常,在 Swift 可以直接让实例化失败返回 nil ,那就是:...指定构造函数和 Convenience 便利构造函数,为什么呢?

1.2K20

Swift讲解专题九——枚举

Swift讲解专题九——枚举 一、引言         在Objective-C语言中,没有实际上是整型数据,Swift枚举则更加灵活,开发者可以不为其分配值类型枚举作为独立类型来使用,也可以为其分配值...二、枚举语法         Swiftenum关键字来进行枚举创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum...        Swift枚举有一个很有意思特点,其可以设置一些相关值,通过相关值,开发者可以从公用枚举获取到传递额外相关值,示例如下: enum Number { case one...四、枚举原始值         原始值也可以理解枚举设置一个具体类型,示例如下: enum Char:String { case a = "A" case b = "B"...case c = "C" } //”A“ var char = Char.a.rawValue 注意,如果枚举Int类型,则类似于Objective-C,枚举原始值会从第一个开始之后依次递增: enum

42220

Swift基础 枚举

Swift基础 - 枚举 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html 枚举为一组相关值定义了通用类型,并使您能够在代码类型安全方式处理这些值...如果您熟悉C,您将知道C枚举为一组整数值分配相关名称。Swift 枚举要灵活得多,不必每个枚举案例提供值。...Swift 枚举本身就是一流类型。它们采用了许多传统上仅由类支持功能,例如计算属性以提供有关枚举当前值更多信息,以及实例方法,以提供与枚举所代表值相关功能。...在 Swift ,用于定义任一类型产品条形码枚举可能如下所示: enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String...) } 这可以理解: “定义一个名为‘Barcode’枚举类型,它可以接受一个带有类型关联值(‘Int’,‘Int’,‘Int’,‘Int’)‘upc’值,或者一个带有类型关联值(‘String’

6100

iOS·枚举变量在 未赋值赋值情况下,默认值0(即第一个枚举类型

枚举类型变量赋值特性: 一个枚举类型如果没有赋初值,则默认值0。 一个枚举类型如果赋值nil,同样值0。...比如说,有这样一个枚举类型: typedef NS_ENUM(NSInteger, PopupType) { PopupTypeNormal = 0, PopupTypeBookInfo...= 1 }; 在调用时候,代码欲从VC字典数组 self.resource 获取某字典 self.resource[indexPath.row] 并取出 type 键值对,但实际使用时,该字典并不存在键值对...,即 [self.resource[indexPath.row] objectForKey:@"type"] 空,这时候如果把它传递给枚举类型,所获得到枚举类型0。...打个断点,可以发现type1和type2值均为PopupTypeNormal,即第一个枚举类型

7.6K10

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

Swift枚举在创建时未分配默认整数值。...相反,这些值类型是已经明确定义好Season类型 枚举使用 当season类型已知时,再次其赋值可以省略枚举类型名 var season = Season.spring print(season...枚举可以用来存储任意类型关联值 声明存储不同类型关联值枚举成员(这个定义不提供任何Int或String类型关联值) 一个成员值是(IntIntInt)类型关联值num 一个成员值是(String...autumn case winter } 当使用字符串作为枚举类型原始值时,每个枚举成员隐式原始值枚举成员名称 enum Season:String { case spring...) 使用原始值初始化枚举实例 可以通过rawValue初始化一个枚举成员,返回值则是枚举成员或nil 可以通过这个来判断这个新枚举成员是否在枚举 enum Season:Int { case

21810

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

Swift枚举和C与Objective-C有很大差别,在Swift枚举也被作为一种数据类型来处理,其中可以添加函数方法。...枚举还有一个原始值概念,要使用原始值,必须在创建枚举类型时设置原始值类型,示例如下: enum MyEnum:Int {     case one=1     case tew     case... three     case Fir,Sec,Thr } var em = MyEnum.one.rawValue 如果原始值是Int类型,则默认从0开始依次递增,开发者也可以手动设置每个枚举原始值...同样,也支持使用原始值来创建枚举实例,如下: var em = MyEnum(rawValue:1) 通过原始值实例枚举对象实际上回返回一个optional类型值,如果传入原始值参数不能匹配到任何一个枚举...des()         Swift枚举也可以添加附加值,在switch语句中取到对应枚举类型后,可以获取开发者设置附加值进行逻辑处理,示例如下: enum MyEnum { //这个类型天啊及一组附加值

2K20

Swift3.0 - 枚举

} b.单行写法 enum CompassPoint { case north,south,ease,west } 提示: Swift 3.0 开始,定义枚举值,统一小写 指定枚举类型原始数据类型...enum Rank: Int{ // Int 设置枚举类型 // 定义枚举值设置值 case ace // 可以case 后面一次定义多个枚举值 case two, three, four, five...) } } } 注意 枚举类型可以Int String等基本类型值,对象是不可以,官方说必须是实现RawRepresentable 协议类型才可以 使用 let...ace = Rank.ace // 非可选值 let rank = Rank(rawValue: 1) 提示 第二种创建枚举为可选类型,这样设计原因是,你有可能创建一个nil对象,处于安全考虑它也必须是可选值...= "3" case west = "4" } 获取原始值 let aceRawValue = ace.rawValue 提示 1.如果你没有定义枚举原始值类型,你不能通过上述方法获取原始值

41420

Java为什么byte类型取值范围-128~127?

大家好,又见面了,我是你们朋友全栈君。 在学习Java基础语法时候,初学者我们可能都会有这么一个疑问为什么byte类型取值范围为什么是[-128,127]而不是[-127,127]。...机器数是带符号,在计算机用一个数最高位存放符号, 正数0, 负数1。 比如:十进制数 +3 ,计算机字长8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。...负数补码:反码+1 例如: 解释:为什么byte类型取值范围-128~127? 现在我们知道了计算机可以有三种编码方式表示一个数....这就是为什么8位二进制, 使用原码或反码表示范围[-127, +127], 而使用补码表示范围[-128, 127]。...因为机器使用补码, 所以对于编程中常用到32位int类型, 可以表示范围是: [-231, 231-1] 因为第一位表示是符号位.而使用补码表示时又可以多保存一个最小值。

99420

15.Swift学习之枚举

枚举介绍 概念介绍 枚举定义了一个通用类型一组相关值,可以在代码以一个安全方式来使用这些值 Swift枚举是一等类型, 它可以像类和结构体一样增加属性和方法 在 C/OC 语言中枚举指定相关名称为一组整型值...,而Swift 枚举更加灵活,不必给每一个枚举成员提供一个值,Swift 枚举可以提供类型有:字符串,字符,整型值,浮点值等 Swift 枚举可以包含方法 枚举类型语法 使用enum...枚举类型赋值可以是字符串/字符/整型/浮点型 如果有给枚举类型赋值,则必须在枚举类型后面明确说明具体类型 enum CompassPoint : Int { case North = 1...C/OC枚举本质就是整数,所以C/OC枚举是有原始值,默认是从0开始,而Swift枚举默认是没有原始值, 但是可以在定义时告诉系统让枚举有原始值 注意: 原始值区分大小写 返回是一个可选值...,因为原始值对应枚举值不一定存在 如果想指定原始值之后,后面的元素值默认+1 , 枚举一定是 Int 类型,如果不是Int类, 必须给所有枚举值赋值, 因为不能自动递增 enum Planet {

53130
领券