草庐IT

Optional

全部标签

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?不能暴露?我似乎找不到任何明确说明情况如此的文档。这里有一个不兼容的

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

ios - 重写枚举初始化?(rawValue : String) to not be optional

如果rawValueinit将返回nil,我想在Swift中为我的枚举从rawValue初始化以返回默认值。现在我有这样的东西:publicinit(fromRawValue:String){self=Language(rawValue:fromRawValue)??.English}我不喜欢这个,因为它是全新的初始化程序。我试着做这样的事情:publicinit(rawValue:String){self=Language(rawValue:fromRawValue)??.English}但是我遇到了访问错误的运行时异常。我能否以某种方式让它工作,或者我只需要使用这个新的,我不能覆盖

swift - 如何在三元条件运算符中使用 Optional 变量?

我想将可选变量与三元条件运算符一起使用,但它抛出错误:可选不能用作bool值。我做错了什么?varstr1:String?varmyBool:BoolmyBool=str1?true:false 最佳答案 你不能将字符串值赋给bool但你可以像这样检查它str1是否为nil:myBool=str1!=nil?true:falseprint(myBool)它会打印false因为str1是空的。 关于swift-如何在三元条件运算符中使用Optional变量?,我们在StackOverflo

ios - fatal error : unexpectedly found nil while unwrapping an Optional values

这个问题在这里已经有了答案:Whatdoes"Fatalerror:UnexpectedlyfoundnilwhileunwrappinganOptionalvalue"mean?(16个答案)关闭6年前。我在Swift中使用了UICollectionView,但是当我尝试更改单元格标签的文本时出现了错误。funccollectionView(collectionView:UICollectionView!,numberOfItemsInSectionsection:Int)->Int{return5}funccollectionView(collectionView:UICollec

swift - 在 Swift 中为 Optional 提供默认值?

在Swift中处理可选值的习惯用法似乎过于冗长,如果你只想在它为nil的情况下提供一个默认值:ifletvalue=optionalValue{//dosomethingwith'value'}else{//dothesamethingwithyourdefaultvalue}这涉及不必要的重复代码,或者varunwrappedValueifletvalue=optionalValue{unwrappedValue=value}else{unwrappedValue=defaultValue}这要求unwrappedValue不是常量。Scala的Optionmonad(与Swift的

c# - 是否使用 "Optional, DefaultParameterValue"属性?

使用Optional和DefaultParameterValue属性与不使用它们有什么区别吗?publicvoidTest1([Optional,DefaultParameterValue("param1")]stringp1,[Optional,DefaultParameterValue("param2")]stringp2){}publicvoidTest2(stringp1="param1",stringp2="param2"){}两者都有效:Test1(p2:"aaa");Test2(p2:"aaa"); 最佳答案 它们的编

c# - C# 4.0 的新功能 - "Optional Parameters"CLS 兼容吗?

这个新功能真的很方便。最近看了《MicrosoftAll-In-OneCodeFramework》的文档,里面提到“OptionalParameters”不符合CLS。所以我通过在公共(public)API中使用“可选参数”对其进行了测试,并打开了FxCop,然后我进行了编译,FxCop没有提示任何事情。与此同时,当我添加一个返回类型为uint的API时,FxCop确实报告了一个警告。所以现在我很困惑,“可选参数”是否符合CLS?确定新语言功能是否符合CLS的最佳方法是什么? 最佳答案 可选参数“有点”符合CLS。带有可选参数的方法