草庐IT

initialization

全部标签

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

ios - Swift 类中的自定义初始化给出 'property not initialized at implicitly generated super.init call' 错误?

我正在尝试创建一个简单的类用作我的MKMapView的注释。我正在获取要解析到这些注释对象中的数据,并认为用字典初始化注释是个好主意,并在这个模型类中而不是在UIViewController。不过,我似乎无法摆脱编译器错误,每当我尝试修复一个错误时,就会出现另一个错误。当前正在获取未在隐式生成的super.init调用中初始化的“属性self.coordinate”。调用super.init()只会产生不同的错误“Propertyself.coordinatenotinitializedatsuper.initcall”,无论我在哪里在方法中调用super.init()。任何帮助将非常

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

ios - 在需要的初始化中有 fatalError 可以吗?(编码器 aDecoder : NSCoder) when I don't use Storyboards?

我有一个ViewController,它需要用ViewModel:NSObject初始化。我对ViewController的实现是:classViewController:UIViewController{letviewModel:ViewModelinit(withViewModelviewModel:ViewModel){self.viewModel=viewModelsuper.init(nibName:nil,bundle:nil)}requiredinit?(coderaDecoder:NSCoder){fatalError("init(coder:)hasnotbeenim

properties - 在 Swift init 中使用 self 和不使用 self 的区别

我注意到在Swift初始化器中初始化属性可以同时使用:self.property=1和property=1这两者有什么区别吗?如果不是,是否存在一种优胜劣汰的惯例? 最佳答案 在第一个中,您明确表示它是一个类/结构属性,而在第二个中它是隐式的。但是有一个很大的区别:如果有一个同名的局部变量(例如传递给init的参数),它将优先并隐藏类/结构属性。作为一个偏好问题,我总是更喜欢通过使用self使其显式化。此外,通过这样做,我可以避免在我认为我正在访问类属性时发生常见错误,而我正在使用局部变量或函数参数。