草庐IT

INITIALIZATION

全部标签

ios - 为什么 NSCalendar 有两个具有相似参数类型的 init 方法,它们接受日历标识符常量之一?

为什么NSCalendar有两个具有相似参数类型的init方法,它们都接受日历标识符常量之一?有两个init方法做完全相同的事情有什么意义?有谁知道为什么Apple会以这种方式将此信息添加到文档中,或者为什么甚至以这种方式创建类?这是第一个初始化方法:init?(calendarIdentifierident:String)这是第二个初始化方法:init?(identifiercalendarIdentifierConstant:String)LinktoApple'sNSCalendarClassReference 最佳答案 这似

ios - 何时使用未包装的可选值作为类型定义的一部分

比方说,我们定义一个类classC{varunwrapped:String!varnonOptional:Stringinit(nonOptional:String){self.nonOptional=nonOptional}}然后我们创建一个C的实例:varc=C(nonOptional:"hola")我看到的是,这两个属性之间的主要区别是没有必要初始化一个未包装的属性,您可以像这样进行比较:ifc.unwrapped==nil{//Dowhatever}虽然非可选属性不允许您与nil进行比较。关键是,在我看来,创建未包装的属性是不安全的,因为当您尝试访问具有nil值的未包装属性时,

opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]

如果遇到了OpenSSL错误opensslErrorStack:[‘error:03000086:digitalenveloperoutines::initializationerror’],并且使用的是Node.js,可以尝试以下解决方案:“dev”:“setNODE_OPTIONS=–openssl-legacy-provider&&vue-cli-serviceserve”找到项目的package.json文件。在"scripts"部分“dev”:“vue-cli-serviceserve”添加“setNODE_OPTIONS=–openssl-legacy-provider”设置为“d

ios - 它显示 "required initializer init must be provided in subclass of UIControl"当我覆盖 init(frame : CGRect)

此代码有效:importUIKitclasswheel:UIControl{}但是这段代码没有:classwheel:UIControl{overrideinit(frame:CGRect){super.init(frame:frame)}当我覆盖init(frame:CGRect)而不是init(coderaDecoder:NSCoder).为什么我必须执行init(coderaDecoder:NSCoder)?如果我没有实现init(frame:CGRect)为什么我不需要实现它?我找到了一个类似的StackOverflow帖子,但没有解释:Swift:Error:'require

ios - 在 Swift 中通过 Storyboard Segue 传递自定义初始化参数

我对自定义初始化程序的概念有些陌生,所以我很难理解我尝试做的事情是否可行。我正在使用源代码创建消息应用程序。所有代码都是在不使用Storyboard的情况下编写的,我现在想实现它。在源代码中实现的init是这样的:init(chat:Chat){self.chat=chatsuper.init(nibName:nil,bundle:nil)title=chat.user.name}requiredinit(coderaDecoder:NSCoder){fatalError("init(coder:)hasnotbeenimplemented")}在didSelectRowAtIndex

Swift enum - 约束关联值

我有一个代表线宽的枚举,它可以是恒定宽度,也可以是相对于它所在View大小的宽度。enumThickness{caseConstant(Float)//wherevalue≥0caseRelative(Float)//where0≤value≤1}有没有办法将这些关联的值约束构建到枚举类型中?我目前正在对这种类型的属性使用didSet属性观察器:varlineThickness:Thickness{didSet{switchlineThickness{caselet.Relative(x):lineThickness=.Relative(min(max(x,0),1))caselet.

ios - Swift 对象初始化(类工厂方法、默认初始化、便捷初始化)

我正在尝试找出在Swift中处理对象的最佳模式。我认为我在初始化器方面做对了,既方便又默认...但是类工厂方法会怎样?我尝试创建一个简单的类Person和一个子类Student,只有很少的属性和方法。这是最正确的做法吗?classPerson{var_name:Stringvar_surname:Stringvar_dateOfBirthday:Stringvar_phoneNumb:[String]init(name:String,surname:String,dateOfBirthday:String,phone:[String]){self._name=nameself._sur

objective-c - 如何将可抛出的 Swift 初始化程序与 Objective-C 代码桥接?

假设我们有一个带有初始化器的Swift类,它可能会抛出错误。此类必须在Objective-C代码库中使用(NSObject子类):importFoundationenumEvenError:ErrorType{caseNonEvenNumber}classFooEven:NSObject{varevenNumber:UIntinit(evenNumber:UInt)throws{guardevenNumber%2==0else{throwEvenError.NonEvenNumber}self.evenNumber=evenNumber}}产生编译警告::0:warning:nocal

在 super.init 之前在表达式中使用初始化属性的 Swift 错误

这并不重要,也有解决方法,但它令人困惑。请参阅下面的最小示例。我指的是一个已初始化的属性,但在调用super.init()之前。为什么下面指示的语句有编译错误?在表达式的右手和左手使用属性有什么特别之处吗?我查看了Swift语言指南,但找不到任何相关内容。swift编译器是不是在这里搞砸了,还是我遗漏了一些关于属性、self和初始化的东西?还是应该在调用super.init之前所有对“myProperty”的引用都是错误的?(请注意,无论属性是常量(使用“let”)还是其他类型,如Int,都没有关系——同样的事情也会发生。)classMyClass:NSObject{varmyProp

swift - 快速创建饼图

我正在尝试快速创建一个饼图,并且想从头开始创建代码而不是使用第3方扩展。我喜欢它是@IBDesignable的想法,所以我从这个开始:importFoundationimportUIKit@IBDesignableclassPieChart:UIView{vardata:Dictionary?requiredinit(coderaDecoder:NSCoder){super.init(coder:aDecoder)!self.contentMode=.Redraw}overrideinit(frame:CGRect){super.init(frame:frame)self.backgr