草庐IT

swift - 如何在 NSManagedObject Swift 扩展中创建托管对象子类的实例?

当为NSManagedObject创建一个扩展助手来创建一个新的托管对象子类时,swift提供了Self类型来模仿instancetype这很棒,但我似乎无法从AnyObject进行类型转换。以下代码无法编译并出现错误'AnyObject'isnotconvertibleto'Self'帮忙吗?extensionNSManagedObject{classfunccreateInContext(context:NSManagedObjectContext)->Self{varclassname=className()varobject:AnyObject=NSEntityDescript

ios - 从 Swift 中的 UITableViewCell 子类中获取 IndexPath

我有一个自定义的UITableViewCell子类及其关联的xib。我在这个单元格中有一个UILabel和一个UIButton并且我已经将按钮的触摸操作内部操作连接到子类。我需要的是当单元格中的按钮被点击时,获取具有该按钮的单元格的索引路径。并可能通过委托(delegate)或其他方式将其发送回ViewController。因为我在UITableViewCell子类中,所以我不能使用像this这样的解决方案因为我没有从单元格子类内部对tableview的引用。经过进一步调查,我发现another解决方案,我像这样在Swift中实现了它。importUIKitclassContactCe

ios - 在 Swift 子类中添加便利构造器

作为学习练习,我正在尝试实现SKShapeNode的子类,它提供了一个新的便利初始化器,它接受一个数字并构造一个ShapeNode,它是数字宽度和高度的平方。根据SwiftBook:Rule1Ifyoursubclassdoesn’tdefineanydesignatedinitializers,itautomaticallyinheritsallofitssuperclassdesignatedinitializers.Rule2Ifyoursubclassprovidesanimplementationofallofitssuperclassdesignatedinitialize

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

swift - Swift 中的 NSObject 子类 : hash vs hashValue, isEqual vs ==

在Swift中子类化NSObject时,您应该覆盖hash还是实现Hashable?此外,您应该覆盖isEqual:还是实现==运算符? 最佳答案 NSObject已经符合Hashable协议(protocol):extensionNSObject:Equatable,Hashable{///Thehashvalue.//////**Axiom:**`x==y`implies`x.hashValue==y.hashValue`//////-Note:thehashvalueisnotguaranteedtobestableacros

ios - Xcode NSManagedObject 子类在标记为非可选时包含可选

我有一个名为Film的核心数据实体,它具有属性标题和日期。我注意到生成的NSManagedObject子类包含可选的NSManaged属性,即使我在核心数据检查器中将属性标记为非可选。我可以手动将其更改为非可选属性还是将其保留为可选是更好的选择吗?为什么? 最佳答案 “可选”对CoreData的意义不同于对Swift的意义。如果核心数据属性不是可选的,则保存更改时它必须具有非零值。在其他时候,CoreData不关心属性是否为nil。如果Swift属性不是可选的,则在初始化完成后,它必须始终具有非nil值。使CoreData属性成为非

initialization - Swift 子类化——如何覆盖 Init()

我有以下类,有一个init方法:classuser{varname:Stringvaraddress:Stringinit(nm:String,ad:String){name=nmaddress=ad}}我正在尝试对此类进行子类化,但我在super.init()部分不断收到错误消息:classregisteredUser:user{varnumberPriorVisits:Int//Thisiswherethingsstarttogowrong-assoonasItype'init'it//wantstoautocompleteitformewithallofthesuperclass

Swift - 必须由子类覆盖的类方法

在Swift中是否有标准的方法来制作“纯虚函数”,即。必须被每个子类覆盖,如果不是,会导致编译时错误? 最佳答案 你有两个选择:1。使用协议(protocol)将父类(superclass)定义为协议(protocol)而不是类Pro:编译时检查每个“子类”(不是实际的子类)是否实现了所需的方法缺点:“父类(superclass)”(协议(protocol))无法实现方法或属性2。在方法的super版本中断言例子:classSuperClass{funcsomeFunc(){fatalError("MustOverride")}}c

ios - 如何在 Swift 中为 UIView 子类编写自定义初始化?

假设我想用String和Intinit一个UIView子类。如果我只是子类化UIView,我该如何在Swift中执行此操作?如果我只是创建一个自定义的init()函数,但参数是一个String和一个Int,它会告诉我“super.init()在从初始化器返回之前没有被调用”。如果我调用super.init(),我会被告知必须使用指定的初始化程序。我应该在那里使用什么?框架版本?编码器版本?两个都?为什么? 最佳答案 init(frame:)版本是默认初始化器。您必须仅在初始化实例变量后调用它。如果此View是从Nib重构的,则不会调