草庐IT

公共(public)类的 Swift 初始值设定项

创建公共(public)类时,是否需要将指定的初始化器公开?公开与不公开有什么区别?例如publicclassA{init(){}}或publicclassA{publicinit(){}} 最佳答案 没有您无需将其公开。事实上,您可以将其设为私有(private)。指定初始化程序(并且您的类允许有多个)的唯一特殊之处在于它们负责确保对象被完全初始化。便利构造器(构造器要么是指定构造器要么是便利构造器)(由convenience关键字标记)没有这个责任。便利初始化器首先委托(delegate)给指定的初始化器,然后在返回后,它有机会

swift - 带有 UUIDString 初始值设定项的 NSUUID

我正在尝试创建一个具有指定值的NSUUID:letuuidString="000000-0000-0000-0000-000000000000"letbeaconUUID:NSUUID=NSUUID(UUIDString:uuidString)第二行给出错误信息:ExtraArgument'UUIDString'incall查看documentation它似乎应该工作。有任何想法吗?我还在uuidString之后添加了asString,同样的问题。 最佳答案 错误信息具有误导性。init?(UUIDStringstring:Stri

ios - 从泛型类继承初始值设定项

我看过一些关于这个问题的讨论,但还没有读到令人满意的解释。谁能告诉我为什么这不起作用?classParent{vardata:Tinit(data:T){self.data=data}}classChild:Parent{}letc=Child(data:4)最后一行报错:'Child'无法构造,因为它没有可访问的初始化器我真的需要实现初始化器来调用super吗?编辑:为了提供一点上下文,真实的代码看起来更接近于下面。我有一个使用泛型的Action类,因为我有另一段代码可以将操作链接在一起,我想使用Swift的类型安全来确保可以链接操作。然后我有一堆子类类(例如CustomAction

swift - 无法为类型 'sqlite3_destructor_type' 调用初始值设定项

到目前为止answerfromMartinR已经完美地工作了。但是从Swift2开始,它现在会引发错误Cannotinvokeinitializerfortype'sqlite3_destructor_type'withanargumentlistoftype'(COpaquePointer)'在那些行中:privateletSQLITE_STATIC=sqlite3_destructor_type(COpaquePointer(bitPattern:0))//https://stackoverflow.com/a/26884081/1271826privateletSQLITE_TR

swift - '#selector' 的参数不引用 '@objc' 方法、属性或初始值设定项

谁能告诉我为什么这段代码给出错误消息“'#selector'的参数不引用'@objc'方法、属性或初始化程序”?timer=Timer.scheduledTimer(timeInterval:0.1,target:self,selector:#selector(updateTimer(until:3)),userInfo:nil,repeats:true)函数如下:funcupdateTimer(untilendTime:Int){counter-=1timeLabel.text=String(counter)ifcounter==endTime{step+=1}}我尝试过的:1.在函

ios - 如何使用 mapkit 和 swift 在设定位置覆盖一个圆圈

我无法弄清楚如何在与用户位置不同的所需位置显示透明的圆形或矩形。我是mapkit的初学者,所以提前致谢。classFirstViewController:UIViewController,MKMapViewDelegate,CLLocationManagerDelegate{@IBOutletweakvarmapView:MKMapView!letlocationManager=CLLocationManager()overridefuncviewDidLoad(){super.viewDidLoad()self.locationManager.delegate=selfself.lo

ios - Swift 3 - 覆盖 UINavigationController 的初始值设定项以设置 rootviewcontroller

我正在使用Swift3覆盖一个init方法,该方法使用rootviewcontroller初始化我的NavigationController(并将rootviewcontroller委托(delegate)设置为self)。但是,我收到以下错误:Incorrectargumentlabelincall(have'rootViewController:',expected'coder:')classNavigationController:UINavigationController,RootViewControllerDelegate{letrvc=RootViewController

swift - 具有非可选属性的便利初始值设定项

我的一个对象有一个整数ID。由于这是一个必需的属性,我没有将它定义为一个可选的,而是在指定的初始化程序中需要它:classThing{varuniqueID:Intvarname:String?init(uniqueID:Int){self.uniqueID=uniqueID}}因为我是从一些JSON创建其中一个,所以用法是这样的:ifletuniqueID=dictionary["id"]as?Int{letthing=Thing(uniqueID:unique)}接下来,我希望能够向接受字典对象并相应地设置属性的Thing类添加一个便利的初始值设定项。这包括必需的uniqueID和

swift - 使父类(super class)的初始值设定项返回特定的子类?

这个问题在这里已经有了答案:CustomclassclustersinSwift(7个答案)关闭7年前。我正在Swift中创建一个单位框架,它具有用于不同单位(例如质量和体积)的测量父类(superclass)和子类。一个功能是允许框架正确猜测它是用什么单元创建的,并返回正确的类。示例代码:classMeasurement{varunitString:Stringinit(unknownUnit:String){//checksiftheunitiseitherVolumeorMass,andreturnsaninstanceofthatclass}}classVolume:Measu

ios - 每天在设定的时间在 Swift 中通知?

这个问题在这里已经有了答案:UILocalNotificationalwaysshowsupassoonasIloadmyappregardlessofthefiredate(1个回答)关闭7年前。如果有人感到困惑并认为这是我昨天的问题的重复,那不是。那里问怎么每天调用函数,这里问怎么每天特定时间调用通知。我正在寻找一种在每天早上7点重复本地通知的方法。我目前有此代码设置来获取日、月、年等。letdate=NSDate()letcalendar=NSCalendar.currentCalendar()letcomponents=calendar.components(.Calendar