草庐IT

Initialization

全部标签

ios - Swift 类 : Property not initialized at super. init 调用中的错误 - 如何初始化需要在其初始化参数中使用 self 的属性

我正在快速覆盖UITableViewController,其中我有两个必需的变量,它们是通过使用self的weak引用初始化的,因为这些用于实现UITableViewDataSource协议(protocol),需要self引用才能使用其tableView属性classVideosListViewController:UITableViewController{requiredinit(coderaDecoder:NSCoder){super.init(coder:aDecoder)self.datasourceOfflineVideos=ASDataSource(tableViewC

swift - 如何为字符串扩展添加自定义初始化?

如何为字符串扩展添加自定义初始化方法?extensionString{init(_amount:Double,decimalPlaces:UInt){self.init()letdecimalFormat="%0.\(String(decimalPlaces))f"letcurrencyAmount=String(format:decimalFormat,amount)letcurrencySign=NSLocalizedString("Defaults.CurrencySign",comment:"currencysign")letformattedString="\(currenc

swift - 如何在 Swift 中初始化 CVPixelBufferRef

我们曾经像下面这样初始化CVPixelBufferRef。CVPixelBufferRefpxbuffer=NULL;但是在Swift中我们不能使用NULL,所以我们尝试了下面的方法,当然XCODE希望我们初始化它以使用它letpxbuffer:CVPixelBufferRef但是如何呢?在Obj_C中,我们像这样创建缓冲区,但正如我在转换为Swift时试图在上面解释的那样,我在第一行就停止了。CVPixelBufferRefpxbuffer=NULL;CVPixelBufferCreate(kCFAllocatorDefault,picGenislik,frameHeight,kCV

ios - 扩展 UIAlertController 便利初始化警告

当我定义一个UIAlertControllerconvenienceinitializer时:extensionUIAlertController{convenienceinit(message:String?){self.init(title:nil,message:message,preferredStyle:.Alert)self.addAction(UIAlertAction(title:"OK",style:.Cancel,handler:nil))}}并在我的UIViewController子类中的按钮操作中使用它:funcbuttonAction(button:UIBut

ios - Swift 避免在初始化器中重复代码

如何避免在初始化器之间重复代码?我希望dateFormatter保持let常量。letdateFormatter:NSDateFormatterinit(){dateFormatter=NSDateFormatter()dateFormatter.dateStyle=.MediumStyledateFormatter.timeStyle=.MediumStylesuper.init(nibName:nil,bundle:nil)}requiredinit?(coderaDecoder:NSCoder){dateFormatter=NSDateFormatter()dateFormatt

cocoa - Swift 初始化程序中参数名称中的 "with"

此初始化程序将导致错误,提示“with”隐含在初始化程序的第一个参数中;你是说名字吗?init(withName:String){}我不确定这意味着什么,如果它自动提供withName外部参数名称,如果我称之为名称或什么...如果我把它改成init(name:String){}任何调用它的尝试init(with:"joe")或init(withName:"Joe")都会失败。所以我不知道错误消息告诉我什么以及如何声明它,所以我将其命名为init(withName:"joe")。 最佳答案 在Swift中,你不应该将with添加到初始

ios - 具有默认值的 Swift public var 并为该默认值运行 didSet

这个问题在这里已经有了答案:IsitpossibletoallowdidSettobecalledduringinitializationinSwift?(9个回答)关闭6年前。我的Swift类是下面的简单代码:classFavoriteView:UIView{requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)commonInit()}overrideinit(frame:CGRect){super.init(frame:frame)commonInit()}convenienceinit(){self.ini

ios - Swift 变量初始化

我对swift中的变量初始化有疑问。我有两种方法来初始化变量(作为Objective-C中类的“属性”)。哪一个是最正确的?classClass{varlabel:UILabel!init(){...label=UILabel()...}}或classClass{varlabel=UILabel()init(){…}} 最佳答案 实际上,您有5种方法来初始化属性。没有正确的方法,根据需要选择。基本上总是将像UILabel这样的对象声明为常量(let)。5种方式是:在声明行中初始化letlabel=UILabel(frame:...在

swift - 必须指定 Swift 协议(protocol)中的初始化程序。为什么呢?

如果你试图在Swift中创建一个包含convenienceinitialiser的protocol,你将立即被编译器责骂:protocolZizo{convenienceinit(a:String,b:Int)}Convenienceinitializernotallowedinnonclasstype.这种限制有什么原因吗?这对我来说没有意义。可能会出现什么问题? 最佳答案 这是因为,它没有意义。protocol只定义实现者所需要的方法和属性。它没有定义实现细节。当protocol需要init(a:String,b:Int)时,您

swift - 如何在 Swift 中使用嵌套的便利可失败初始值设定项检查 nil?

classOAuthToken:NSObject,NSCoding{varrefreshToken:String?varaccessToken:String?varscope:String?convenienceinit?(refreshToken:String?,accessToken:String?,scope:String){self.init()ifletacutalRefreshToken=refreshTokenasString?{self.refreshToken=acutalRefreshToken}else{returnnil}ifletactualAccessTok