草庐IT

private_struct

全部标签

ios - 如何在 init 中捕获错误(来自解码器 :Decoder) from a Codable struct?

letjsonString="""{"name":1,"gender":"male",}"""structPerson:Codable{varname:Stringvargender:Stringpublicinit(fromdecoder:Decoder)throws{do{letcontainer=trydecoder.container(keyedBy:CodingKeys.self)name=trycontainer.decode(String.self,forKey:.name)gender=trycontainer.decode(String.self,forKey:.ge

swift - 为什么 reduce 对 Struct 不起作用?

我有以下代码structTab{varorigin:CGFloatvarwidth:CGFloatinit(width:CGFloat){origin=0self.width=width}}letsubTabs=[Tab(width:1),Tab(width:2)]letw=reduce(subTabs,CGFloat(0),{$0.width+$1.width})并期望reduce对我的结构中的width求和。但它会引发编译器错误(您可以在Playground中测试)。 最佳答案 reduce需要的函数有两个参数:累加值和序列中的

Swift - 如何声明私有(private)嵌套结构?

我想让我的代码更具可读性,所以我决定制作一些重复的字典键,软编码...所以我创建了一个新的.swift文件,里面有2个结构:structDatabaseTableNames{letPhoto=PhotoTable()}privatestructPhotoTable{letlowQuality="lowQuality"lethighQuality="highQuality"letnumberOfLikes="numberOfLikes"}所以我有我要使用的初始结构和第二个结构,我不希望它在文件范围之外可见......事情是,它说PhotoDatabaseTableNames结构的属性,需

swift - C 中的 offsetof(struct, member) 在 Swift 中的等价物是什么?

这是Swift中的一个结构体:structA{varxvaryvarz}我应该怎么做才能得到结构A中y的偏移量,就像C中的offsetof(A,y)一样?谢谢:) 最佳答案 MemoryLayout.offset(of:)是在Swift4.2中添加的,实现了SE-0210Addanoffset(of:)methodtoMemoryLayout例子:structA{varx:Int8vary:Int16varz:Int64}MemoryLayout.offset(of:\A.x)//0MemoryLayout.offset(of:\A

swift - 为什么要在模型中使用私有(private)变量?

我在一个在线视频中找到了这个例子,但我无法真正理解它的重要性以及幕后发生的事情:classPerson{privatevar_name:String!varname:String{return_name}init(name:String){_name=name}}在视频中,他提到私有(private)变量是为了防止类操纵数据,但我不明白为什么这会成为一个问题,以及它是如何发生的。有人可以像我5岁一样向我解释一下吗?感谢帮助 最佳答案 Cansomeonepleaseexplainthistomelikei'm5?好的,我五岁的fri

ios - 未使用 Struct 初始化变量时如何处理默认初始化程序

我正在使用swiftstruct并尝试在我的结构变量未初始化时使用其默认初始化程序,我尝试了非可选变量和可选变量,但仅显示“memberwiseInitializer”。下面是带有可选变量的例子structmyFirstStruct{varvalue1:String?varvalue2:String?}下面是非可选变量的例子structmyFirstStruct{varvalue1:Stringvarvalue2:String}它只给myFirstStruct(value1:,value2:)我想使用myFirstStruct()帮帮我。:) 最佳答案

arrays - 将 Swift Array 的内容复制到 Struct embedded Tuple

为了与BLE特征进行通信,我有一个Swift结构,如下所示:structPacket{varcontrol1:UInt8=0varcontrol2:UInt8=0varpayload:(UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8,UInt8)=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)init(control1:UInt8,control2:UInt8){self.control1=control1self.control2=c

swift - 如何使用 Swift 协议(protocol)扩展来创建可以修改私有(private)属性的共享代码?

假设场景:有类:ClassA;和ClassB。两者都实现了ProtocolC,其中包含单一要求funccreateKey()。ProtocolC有一个extension实现了createKey()因为关于这个函数,ClassA和ClassB是相同的。但是,createKey()的实现需要访问ClassA和ClassB都包含的名为uniqueKey的私有(private)变量,其值在两个类中需要不同(如您所想)。ProtocolC中createKey()的extension因此变得无用-因为变量是fileprivate-这意味着它的代码有在ClassA和ClassB中复制。但重复代码是编

swift - 拥有@objcMembers 私有(private)动态变量时@objc 冗余?

因此,我将Realm与Swift一起使用,并使用@objcMembers关键字标记我的类,但是当我尝试创建一些私有(private)变量时,Xcode强制我在这些私有(private)变量旁边添加@objc。这是有意的行为吗?对我来说似乎是多余的。@objcMembersclassMyObject:Object{@objcdynamicprivatevartext:String=String()@objcdynamicprivatevaryoutubeLink:String=String()@objcdynamicprivatevarcount:Int=0dynamicvarisFav

swift - 为什么公共(public)类型可以抛出一个私有(private)类型的错误?

为什么这段代码可以编译?//===============//MyStruct.swift//===============privateenumMyError:Error{caseunexpectedError}publicstructMyStruct{staticfuncthrowError()throws{throwMyError.unexpectedError}}//===============//main.swift//===============do{tryMyStruct.throwError()}catch{print(error)//"unexpectedErro