草庐IT

Non-optional

全部标签

swift - 如何在 Swift 2.0 中使用 guard "strongify"optional self

有一个similarquestion关于如何weakify/strongifyself,已回答,但我想知道如何使用“self”而不会因iflet:WelcometoAppleSwiftversion2.0(700.0.59700.0.72).Type:helpforassistance.2>importFoundation3>classFoo{4.funcguardOptSelf()->()throws->Void{5.return{[weakself]in6.guardletself=selfelse{throwNSError(domain:"Iwasdestroyed!",code

swift - "Cannot inherit from non-open class" swift

从Xcode8beta6开始,我现在在其定义模块之外收到编译错误“无法从非开放类(Class)继承”我继承的类是单独的Swift框架的一部分,但我的项目是为Xcode8beta5编译的。我需要更改什么才能让我的项目再次编译? 最佳答案 我自己找到了答案。在Swift3中,您现在可以将类标记为open而不是public这允许模块外部的文件子类化该类。只需将模块类中的public替换为open。引用here. 关于swift-"Cannotinheritfromnon-openclass"s

swift - NSString boundingRectWithSize :options:attributes:context: not usable in Swift?

我收到错误...找不到接受所提供参数的“init”的重载...当我尝试使用...extensionUIFont{funcsizeOfString(string:String,constrainedToWidthwidth:Double)->CGSize{NSString(string).boundingRectWithSize(CGSize(width,DBL_MAX),options:NSStringDrawingOptions.UsesLineFragmentOrigin,attributes:[NSFontAttributeName:self],context:nil).size

ios - 应用程序(_ :didFinishLaunchingWithOptions:)' nearly matches optional requirement

安装Xcode8beta6后,我收到一条警告:Instancemethod'application(_:didFinishLaunchingWithOptions:)'nearlymatchesoptionalrequirement'application(_:didFinishLaunchingWithOptions:)'ofprotocol'UIApplicationDelegate'在我的AppDelegate中。有2个建议的fixit可以消除警告:将方法标记为私有(private)在方法中添加@nonobjc做任何一个都会消除警告。但为什么需要这样做?

swift - Swift 中的 'non-nominal type' 是什么?

我在尝试扩展诸如(Int,Int)或Any之类的非正统“类型”时看到此错误:Non-nominaltype'Any'cannotbeextended那么什么使类型成为非标称类型呢?像Any或(Int)这样的非标称类型和像Int这样的常规标称类型有什么区别? 最佳答案 currentlyacceptedanswer不正确;实际答案来自Swift类型系统的一个深奥的部分。Swift中的大多数类型都是标称类型——它们是作为用户代码的一部分在特定模块中声明的“命名”类型。Int和Array等看似原始的类型实际上是Swift模块中定义的结构,

objective-c - Swift Optional Int(Int?)可以通过桥接暴露给 Objective-C 吗?

在从基于Obj-C的框架派生的Swift类中(但可以很容易地成为具有@objc属性的Swift类)我声明了两个存储属性:varoptInt:Int?varoptString:String?只有optString通过生成的-Swift.hheader暴露给Obj-C。字符串?大概没问题,因为它是使用可以为nil的NSString对象公开的,因此桥接有一种表示无值的方法。如果我删除?从optInt中它暴露了一个NSInteger类型,所以我可以看到对于非可选整数它避免了对象并将值类型桥接到值类型,但这是否真的意味着Int?不能暴露?我似乎找不到任何明确说明情况如此的文档。这里有一个不兼容的

Swift 协议(protocol)错误 : 'weak' cannot be applied to non-class type

Protocols和class-boundProtocols有什么区别,我们应该在Swift中使用哪一个?protocolA:class{...}protocolA{...}当协议(protocol)未定义为:class时尝试添加weak委托(delegate)时出现错误:protocolA{...}weakvardelegate:A给出错误:'weak'cannotbeappliedtonon-classtype或'weak'mustnotbeappliedtonon-class-bound'A';consideraddingaprotocolconformancethathasac

ios - 在Swift中,如何避免同时使用 optional 对象和nil对象引用?

optional参数的全部原因是为了防止由于运行时分配给nil/null/none的变量而导致崩溃。因此,变量不能为零。而是可以将它们包装为Optional类型,将它们表示为Some或None,并展开以获取Some或nil的特定内容。但是,如果您使用!或ImplicitlyUnwrappedOptionals在所有位置将它们解包,则由于您是一个不完善的编码器,您只会引入运行时崩溃的可能性。如果使用iflet安全地解包它们,可以避免崩溃,但是您会陷入iflet语句的作用域中,无法使用Some中的值,并且仍然必须处理可能的nil情况。如果使用?为了暂时解开包装以调用方法,完成后将被重新包装

ios - 我什么时候应该将 optional 值与 nil 进行比较?

很多时候,您需要编写如下代码:ifsomeOptional!=nil{//dosomethingwiththeunwrappedsomeOptionale.g.someFunction(someOptional!)}这似乎有点冗长,而且我听说使用!forceunwrap操作符可能不安全,最好避免。有没有更好的方法来处理这个问题? 最佳答案 几乎总是没有必要检查optional项是否不是nil.几乎唯一需要这样做的时候是它的nil-ness是你唯一想知道的——你不关心值是什么,只是它不是nil.在大多数其他情况下,有一些Swift速记

ios - swift + 核心数据 : Cannot Automatically Set Optional Attribute On Generated NSManagedObject Subclass

我有一个名为Record的核心数据实体,并且有一个属性dateUpdated。我注意到生成的NSManagedObject子类没有可选标记(?)CoreData编辑器:生成的子类:预期:更新:这对我来说很乏味,因为每次我想重新生成子类时,这意味着我还需要手动更新所有可选值。在子类中有一个非可选的(没有'?')让我在分配之前检查评估值,如下例所示://samplevalue://serverDateFormatter="yyyy/MM/dd"//dateString=""//BranchisasubclassofRecord(seeaboveimages)vardate=self.cor