草庐IT

lazy-init

全部标签

swift 2.2 : failable initializers in lazy properties

首先非常感谢您的帮助。我昨天刚刚升级了包含swift2.2的Xcode。我遇到了一些问题,但我通过遵循Natashatherobot的“swift2.2中的新功能”主题快速解决了这些问题。但是有一个问题我无法解决。它是关于在swift2.2中引入的UIFont的可失败初始化器。附上一段简单的代码,在swift2.2中会报错。在我清理项目之前,它可能不会立即报告错误。lazyvarsomelabel:UILabel={letlabel=UILabel()letfont=UIFont(name:"somefont",size:10)??UIFont.systemFontOfSize(10)

swift - : class that inherits SKSpriteNode with init,如何调用init(颜色:,大小:)

我使用形状制作游戏原型(prototype),在swift出现之前,spritekit非常棒。现在,当我尝试扩展SKSpriteNode并添加我的init函数时,我无法调用super.init(color,size)。我无法调用创建形状纹理的代码。我需要知道如何调用该init函数,或者如何创建形状纹理,以便我可以覆盖指定的init,然后使用我的形状纹理调用它。编辑:这是我正在做的确切代码,我在另一个SKSprite节点扩展类中做了几乎完全相同的事情:classTetrisCell:SKSpriteNode{letlength=10;convenienceinit(color:UICol

swift - 'Use of self in method call before super.init initializes self',无法通过方法调用初始化属性

我很好奇在您的init方法中是否有调用方法来设置类的实例属性。本质上我只是有一个子类UIView的类,在init中添加了一些subview,其中一些subview是该类的实例变量。classMyView:UIView{varcollectionView:UICollectionViewconvenienceinit(){self.init(frame:CGRectZero)}overrideinit(frame:CGRect){super.init(frame:frame)addSubviews()}requiredinit(coderaDecoder:NSCoder){super.i

ios - init 的 Swift 协议(protocol)扩展自引用问题

我正在寻找一种通过协议(protocol)扩展向协议(protocol)添加默认初始化器的方法。我的协议(protocol)是:protocolTestProtocol{varmyVar:Double{getset}init(value:Double)init(existingStruct:TestProtocol)}我已经使用这个协议(protocol)实现了一个结构:structTestStruct:TestProtocol{varmyVar:Doubleinit(value:Double){myVar=value}init(existingStruct:TestProtocol)

arrays - “数组”不可用 : please construct an Array from your lazy sequence: Array(. ..)

我将Xcode更新到9beta,我已将我的代码修复为swift2。现在,我在以下代码中遇到错误“'array'不可用:请从您的惰性序列构造一个数组:Array(...)”。vardic:[String:String]=Dictionary(minimumCapacity:8)dic.values.array//error我应该怎么写而不是这段代码?Array(dic.values)这段代码正确吗?我找不到关于LazyMapCollection的Apple文档。谢谢。 最佳答案 像这样:vardic:[String:String]=D

ios - 构造其子类时无法访问 Swift 通用父类(super class)的 init

我有以下代码:classILProperty{varvalue:T?init(_value:T){self.value=value}}typealiasILStringProperty=ilStringPropertyclassilStringProperty:ILProperty{}letx=ILStringProperty("X")最后一行是编译错误:'ILStringProperty'cannotbeconstructedbecauseithasnoaccessibleinitializers如果我覆盖初始化:overrideinit(_value:String){super.i

ios - UINavigationController子类方便初始化使子类常量init两次

我有UINavigationController和UITableViewController的子类。为了初始化子类,我决定使用一些convenienceinit方法来调用父类(superclass)的一些指定初始化程序。此外,每个子类都有一些let常量:letsomeValue:SomeClass=SomeClass()每个类都通过调用其新创建的convenienceinit方法成功初始化。问题是let常量在UINavigationController子类中初始化了TWICE。importUIKitimportPlaygroundSupportfinalclassNavigation:

class - 'self' 在 super.init 调用之前使用

我是swift的新手,我不明白如何初始化一个类。成功在类定义中被初始化为falseif(succeeded&&(time>1000)){errormessage+=";connectionslow"}时间初始化为time=data[3].toInt()数据在哪里vardata=split(raw_data){$0==","}而raw_data是一个字符串。类定义:classgeocodeObject:NSObject{init定义:init(lat:String,long:String,userstate:String){(没有任何类型的super初始化)完整的代码与切入方式:clas

swift - 我可以使用从文件加载的常量字符串从 Swift 中的类 init() 抛出吗?

我希望Swift中的类init()在将文件加载到类中的字符串中出现问题时抛出错误。加载文件后,字符串将不会更改,所以我更愿意使用let。这有效:classFileClass{vartext:NSString=""init()throws{do{text=tryNSString(contentsOfFile:"/Users/me/file.txt",encoding:NSUTF8StringEncoding)}catchleterrorasNSError{text=""throwerror}}}但是当我更换vartext:NSString=""与lettext:NSString我得到一个

inheritance - swift 子类*总是*必须调用 super.init()

如果我有一个swift子类:不需要访问self不需要访问self的任何属性我还需要在子类的init()方法中调用super.init()吗?*注意:这是一个不同于提问和回答的问题hereonSO因为上面1和2中列出的细节。 最佳答案 不,你不必。假设您有以下类(class)。classa{letname:Stringinit(){name="james"}}classb:a{lettitle:Stringoverrideinit(){title="supervisor"}}如果你用实例化一个变量让myVar=b()然后,overri