草庐IT

admin_init

全部标签

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

ios - 'required' initializer 'init(coder:)' 必须由 'UITableViewCell' 的子类提供`

据说此代码有效here和here,但我似乎无法让它发挥作用。IBOutlets连接到Storyboard中的对象。prototypeCell已命名,因此我可以将它与dequeueReusableCellWithIdentifier一起使用,并且它的自定义类属性设置为commentCell。第一个错误(我可以解决,但上面的链接都不需要它,这让我觉得我做错了什么。我是对的吗?):Overridingmethodwithselector'initWithStyle:reuseIdentifier:'hasincompatibletype'(UITableViewCellStyle,Strin

ios - Xcode UIView.init(帧 :) must be used from main thread only

我正在尝试在后台线程中渲染一些View以不影响主线程。在Xcode9之前,这从来都不是问题。DispatchQueue.global(qos:.background).async{letcustomView=UIView(frame:.zero)DispatchQueue.main.async{self.view.addSubview(customView)}}UIView.init(frame:)mustbeusedfrommainthreadonly这个错误出现在第二行。更新AppleUIView文档实际上在线程注意事项部分中说:Manipulationstoyourapplica

swift - 在 Swift 中,从 init() 调用时 didSet 不会触发

我有车和司机。他们相互引用。在汽车的init()中,我创建了一个驱动程序并将其分配给驱动程序成员。driver成员有一个didSet方法,该方法应该设置司机的车,从而将它们相互链接起来。classGmDriver{varcar:GmCar!=nil}classGmCar{vardriver:GmDriver{didSet{driver.car=self}}init(){driver=GmDriver()}}letmyCar=GmCar()println(myCar.driver.car)//nil但是,didSet永远不会触发。为什么? 最佳答案

arrays - 具有容量的 Swift init 数组

如何快速初始化具有特定容量的数组?我试过:vargrid=Array()grid.reserveCapacity(16)但是报错expecteddeclaration 最佳答案 怎么样:classSquare{}vargrid=Array(count:16,repeatedValue:Square());尽管这将为每个方block调用构造函数。如果您使数组具有可选的Square实例,您可以使用:vargrid2=Array(count:16,repeatedValue:nil);编辑:在Swift3中,此初始化程序签名已更改为以下内

ios - fatal error : init(coder:) has not been implemented error despite being implemented

我收到一条错误消息:fatalerror:init(coder:)hasnotbeenimplemented对于我的自定义UITableViewCell。该单元格未注册,在Storyboard中和使用dequeasreusablecell时具有标识符cell。在自定义单元格中,我将初始化设置为:代码:overrideinit(style:UITableViewCellStyle,reuseIdentifier:String?){print("test")super.init(style:style,reuseIdentifier:reuseIdentifier)}requiredini