草庐IT

swift - ARC 如何处理强制解包实例

我正在尝试了解ARC的确切工作原理,所以我阅读了SwiftARCdocumentation我遵循了他们在文档中使用playground提供的示例:classPerson{letname:Stringweakvarapartment:Apartment?init(name:String){self.name=name}deinit{print("\(name)isbeingdeinitialized")}}classApartment{letunit:Stringweakvartenant:Person?init(unit:String){self.unit=unit}deinit{pr

swift - 如何在 Swift 1.2 中解包 Optional<Optional<T>>

假设我们有String??值。Optional的Optional可能有3种状态:letstrOptOpt1:String??=.Some(.Some("actualvalue"))letstrOptOpt2:String??=.Some(.None)letstrOptOpt3:String??=.None为了安全地将它们解包为String,在Swift1.1中我们可以:ifletstr:String=strOptOpt?{println(str)}else{println("wasnil")//`.Some(.None)`or`.None`}但它在Swift1.2中不再有效:iflet

objective-c - 无法在 SWIFT 中解包 NSAppleEventDescriptor

我有一个Applescript给我一个结果。但是我无法将值解扭曲为字符串,所以我可以使用它。varset:String="setwindowTileto\"\"\n"vartell:String="tellapplication\"SystemEvents\"\n"varsetFrontApp:String="setfrontApptofirstapplicationprocesswhosefrontmostistrue\n"varsetFrontAppName:String="setfrontAppNametonameoffrontApp\n"vartellProcces:Strin

ios - Swift 2.0 错误从 '[NSIndexPath]?' 向下转换为 '[indexpath]' 仅解包可选

您好,下面的代码在swift1.2中运行良好,但是当我升级到swift2.0时:funcdeselectAllRows(){ifletselectedRows=tableView.indexPathsForSelectedRowsas![NSIndexPath]{forindexPathinselectedRows{tableView.deselectRowAtIndexPath(indexPath,animated:false)}}}它显示以下错误:Downcastfrom'[NSIndexPath]?'to'[indexpath]'onlyunwrapsoptional关于如何解决

swift - 为什么 Swift 隐式解包可选 `nil` ?

self.presentTextInputControllerWithSuggestions(nil,allowedInputMode:WKTextInputMode.Plain){(results:[AnyObject]!)->Voidin//resultscanbenilifletspeech=results.firstas?String{debugPrint(speech)}}请原谅我的无知,恐怕我错过了对可选值的一些基本理解。我的印象是!,隐式解包的可选指示符,保证该类型的变量不为nil。然而,这个非常简单的AppleAPI很少会返回nil。这是一个意外的错误还是可选规范的一部

optimization - 使用 "if let"解包堆栈对象(例如结构)

这是一个关于Swift可选堆栈对象(例如struct)和“iflet”的Swift编译器优化问题。在Swift中,“iflet”为您提供了一个语法糖来处理可选项。住在堆栈上的结构呢?作为一名C++程序员,我不会引入不必要的堆栈对象副本,尤其是,只是为了检查它是否存在于容器中。每次您使用“iflet”时,是否递归地复制结构及其所有成员,或者swift编译器是否已优化到足以通过引用或使用其他技巧创建局部变量?例如,我们将这个结构体打包成一个可选的:structMyData{vara=1varb=2//lotsmorestore....funcdescription()->String{re

ios - 尝试访问字典中 AnyObject 数组的成员时出错 - 有没有办法解包?

我有一个字典设置为:varjDict=Dictionary()数组是自定义按钮(JunkBut​​ton)或标签(JunkLabels)的集合。我在尝试访问字典中包含的数组成员时遇到问题,如下所示:letthisArray=jDict[key]varaButton=thisArray[0]//Giveserror:'AnyObject[]?doesnothaveamembernamed'subscript'我可以通过向下转换整个数组来解决这个问题,如下所示:ifletaArray=thisArrayas?JunkButton[]{varaButton=aArray[0]}这看起来很麻烦

swift - 无法将 Swift 隐式解包可选声明为常量

这是来自Theswiftprogramminglanguageibook的代码示例:classProduct{letname:String!init?(name:String){ifname.isEmpty{returnnil}self.name=name}}除非将名称声明为变量而不是常量,否则它不起作用。在Swift1.2中是否引入了我不知道的关于此问题的更改? 最佳答案 这是由于1.2中的更改现在,在从类的可失败初始化程序返回nil之前,您必须将所有属性设置为有效值。原因是,即使在初始化器失败后,类的deinit仍然运行,并且对

swift - 为什么隐式解包的可选不在 [String : Any] 类型的字典中解包

如果我在我的类中声明了一个隐式解包的可选值,然后我在[String:Any]类型的Dictionary中引用它,它不会被解包。为什么是这样?为什么不是可选的Any不强制它解包?varaString:String!="hello"varparams:[String:Any]=["myString":aString]print(params)//Thisprints["myString":Swift.ImplicitlyUnwrappedOptional.some("hello")]请注意,如果我将字典指定为[String:String]类型,它将被解包,但是当我在Dictionary.

swift - 如何在隐式解包可选上调用 .map()?

Optional有map方法。///If`self==nil`,returns`nil`.Otherwise,returns`f(self!)`.funcmap(f:(T)->U)->U?当我们要转换Int?至UInt64?,我们可以:letiVal:Int?=42leti64Val=iVal.map{UInt64($0)}代替:vari64Val:UInt64?ifletiVal=iVal{i64Val=UInt64(iVal)}在这里,ImplicitlyUnwrappedOptional有相同的方法:///If`self==nil`,returns`nil`.Otherwise,