草庐IT

json - 在 Swift 中检查 Optionals 是否为 nil

如何在Swift中检查Optionals的nil值?我正在尝试评估解析JSON是否成功。当传递无效的json时,这应该打印一条错误消息,但失败并返回EXC_BAD_INSTRUCTION。funcparseJson(data:NSData){varerror:NSError?varjson:NSDictionary=NSJSONSerialization.JSONObjectWithData(data,options:NSJSONReadingOptions.MutableContainers,error:&error)asNSDictionaryifleterr=error{prin

swift - 与 nil 比较并在 Swift 中返回一个 bool

更新:这个问题在Xcodebeta5之后不再是问题似乎beta3版本重构了“nil”在引擎盖下的工作方式,但没有提供足够的文档。我的这段代码在beta2中运行良好:funchasLogin()->Bool{returnself.credentail!=nil}但在beta3中,我得到了这个错误Type'NativeObject'doesnotconformtoprotocol'NilLiteralConvertible'self.credential是'Credential'协议(protocol)的可选值,由NSObject子类实现@objcprotocolCredential:NS

ios - Swift & Parse - PFUser currentUser 从不等于 nil

我正在使用Xcode、Swift和Parse。当我尝试注销PFUser时,我永远不会返回nil。在应用程序的这一部分,viewController只是显示几个按钮,一个是登录按钮。一个是让用户注册。一种是让用户更改详细信息,另一种是简单的注销。注销时两个重要的代码是;@IBActionfunclogout(sender:AnyObject){PFUser.logOut()varcurrentUser=PFUser.currentUser()self.displayAlert("Youarenowloggedout",error:"")println(currentUser!)}@IBA

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

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

ios - NSDate dateByAddingUnit 强制选项 - nil 不编译

这个问题在这里已经有了答案:Swift2.0calendarcomponentserror(3个答案)关闭7年前。所以我刚刚尝试了一个我认为很简单的操作——向NSDate添加一天:也在SO上关注这个答案它提供了以下解决方案,虽然不完全是我想要的(但具有相同的逻辑)不起作用:lettwoDaysAgo=calendar.dateByAddingUnit(NSCalendarUnit.Day,value:-2,toDate:NSDate(),options:nil)我收到以下错误消息:"Couldnotfindanoverloadfor'NSDate.init'thatacceptsthe

swift - Realm 关系在不应该返回 nil

classBook:Object{//(…)varreadingSessions:[ReadingSession]{returnlinkingObjects(ReadingSession.self,forProperty:"book")}}classReadingSession:Object{//(…)varbook:Book?varaComputedProperty:Int{print(self)//PrintsReadingSession{book=Book{(…)}(…)}print(self.book)//Printsnil//(…)}}代码几乎说明了一切。如果我从我的计算属性

swift - 调用view.removeFromSuperview()后是否需要设置view为nil?

在下面的代码中,我有两个按钮。button1是可选的,它被赋予了将自身从superview中移除的功能。button2被分配了一个函数,将button1添加到superview,并解包button1的可选类型。我希望在调用.removeFromSuperview()后从内存中释放button1,这样当你在点击button1后点击button2时,应用程序会崩溃:varbutton1:UIButton?overridefuncviewDidLoad(){super.viewDidLoad()varframe1=CGRectMake(100,150,150,40)button1=UIBut

ios - ARC 在解除分配之前是否将其引用类型实例属性设置为 nil?

我在阅读this时想到了这个问题.我的问题引用下图:一旦john设置为nil,Person实例将不再具有任何强引用,因此将被释放。但是Apartment有两个强引用,其中一个是Person实例上的属性,该实例很快就会被释放。我相信,这个强引用在解除分配后会继续保留,并且代码无法访问。因此,将unit14A设置为nil只会删除对Apartment实例的一个强引用,它不应被释放,因为本来会有一个由于上述案例,更具引用性。但是,正如文档所说,Apartment实例很快就被释放了。对我来说,这只有在Person实例释放时才会发生,它通过删除强引用将其apartment属性设置为nil在Apar

swift - 为什么 nil 合并运算符包装一个隐式展开的默认值?

我看到运算符没有理由返回隐式展开的可选。但是它把一个隐式解包的可选默认值包装成可选的(wrapped)有什么意义呢?我只是期望非可选结果。我是不是觉得哪里错了?vardefaultValue:Int!=0varoptional:Int?letresult=optional??defaultValueprint(defaultValue.dynamicType)//ImplicitlyUnwrappedOptionalprint(result.dynamicType)//Optional 最佳答案 查看声明了nil合并运算符的Swif

Swift 2 iOS 9 Do Catch 尝试崩溃并发现意外的 nil

我正在努力熟悉swift2和iOS9中新的docatch语句我的问题是NSURLSession出错时,data参数返回nil,error返回一些东西。在iOS8中,这是预期的功能,我们只是使用if语句来确定Data是否为nil但是对于docatch,有一个新的try关键字,我认为它是为了查看某些东西是否有效,如果它无效t然后默认为catch中编写的任何代码但是,由于数据为零,我遇到了意外崩溃。这是预期的功能吗,为什么当我的try方法失败时catch没有被调用?我正在使用NSURLSession从API中提取数据。我像这样创建一个dataTaskWith请求:lettask=sessio