Tag: 可选

如何在Swift中处理NSUserDefaults中的非可选值

要从NSUserDefaults得到一个值,我会做这样的事情: let userDefaults = NSUserDefaults.standardUserDefaults() if let value = userDefaults.objectForKey(key) { print(value) } 但是,这些方法不会返回可选项: boolForKey (如果未设置,则默认为false ) integerForKey (如果未设置,则默认为0 ) floatForKey (如果未设置,则默认为0.0 ) doubleForKey (如果未设置,则默认为0.0 ) 在我的应用程序,我想使用保存的整数值,如果它已经被设置。 如果以前没有设置,我想使用我自己的默认值。 问题是0是我的应用程序的有效整数值,所以我无法知道0是否是以前保存的值,或者如果它是默认的未设置值。 我将如何处理这个?

致命的错误:意外地发现零,而解包可选值 – 斯坦福计算器

我正在观看ItunesU上的Standford Swift讲师,并且在理解上有些麻烦。 讲师在一个点上将string转换为Double。 他做了如下: return NSNumberFormatter().numberFromString(display.text!)!.doubleValue display.text是一个UILabel无论如何,当我这样做我的应用程序崩溃,我得到以下错误: fatal error: unexpectedly found nil while unwrapping an Optional value 当我像这样types化string时: (display.text! as NSString).doubleValue 它工作正常。 我知道在任何地方都必须有一个可选的variables,但是我不是那么认为在这一点上出了什么问题。 我很高兴每一个提示。

iOS / Swift:无法将可选string分配给UILabel文本属性

UILabel有一个文本属性,它是一个可选的string,但它似乎像一个隐式解包可选。 为什么我不能分配另一个可选的string? 谢谢。 @IBOutlet weak var tweetContent: UILabel! … var unopt: String = "foo" var opt: String? = "bar" var opt2: String? opt2 = opt //Works fine cell.tweetContent.text? = unopt //Works fine cell.tweetContent.text? = opt //Compile error: Value of optional type 'String?' not unwrapped

Swift与元组的可选绑定

我试图在Swift中的IF语句中使用元组作为可选绑定,但它不会编译,并且该错误消息不是有用的。 为什么不能编译? let user:String? = "billy" let pass:String? = "password" if let test = (user?,pass?){ print("this works") } 或这个 let user:String? = "billy" let pass:String? = "password" if let test = (user,pass){ print("this works") }

Facebookgraphics对象/实体parsingSwift中的SDK 4

在Swift中,如何parsingfbkgraphics请求的结果? 我有一个嵌套字典,并转换为[String:String]不起作用。 我已经铸造了NSDictionary,它适用于1级,但任何嵌套开始抱怨optionals和铸造。 我从转换中看到,FBGraphObject已被弃用,那么现在SDK 4中的正确方法是什么? 我的数据看起来像 { data = { "is_silhouette" = 0; url = "…"; }; } 我可以 var data = photoRes["data"] as? NSDictionary 要得到 Optional({ "is_silhouette" = 0; url = "…; }) 我不知道如何parsing这个对象… 编辑现在我有它的工作 var data = photoRes["data"] as? NSDictionary var urlStr = data!["url"] as? String if urlStr != nil { let url […]

如何使用Optionals在Swift中停止编译器错误

我想要一种方法来检测string中的input错误,并通知用户。 以下面的例子: let fraction = "15/8" let fractionArray = fraction.components(separatedBy: "/") let numerator = Double(fractionArray[0]) let denominator = Double(fractionArray[1]) var linearFactor = numerator! / denominator! print(numerator!, "/", denominator!, " = ", linearFactor) 但是,如果我强制展开,string中的无效字符将强制编译错误,我宁愿通知用户,inputstring包含无效分数。 可选的链接似乎是要走的路,但我不能正确的语法。 在我的代码中( 如下所示 ),我将可选的链接操作符放在数组旁边,包括fraction?.components(separatedBy: “/“)但是Fix – 它告诉我要删除它。 如果有更好的方法比可选的链接来解决这个问题有人请解释我可能错过了什么,当我在这里search答案,所以我可以使代码工作? 谢谢 let fraction = “15/8” if let fractionArray = fraction?.components(separatedBy: “/“) { let numerator […]

Swift Optionals – 不同的展开方式

我会正确地做到这一点: 有什么区别: var test: String? test = "this is an optional string" if test != nil { println("\(test!) IS NOT nil") } else { println("test is nil") } 和 if let test = test { println("\(test) IS NOT nil") } else { println("test is nil") } 两个输出结果都在操场上。 我知道隐式解包不被认为是安全的(在大多数情况下),但是,在这里,我正在检查值是零之前解包? 这两种方法是否有效?是否有不同的情况,哪一种被认为是更好的select?

在Apple Swift中,在什么情况下我不希望隐式解包可选项?

我相信我明白为什么选项是方便的(我最好的想法是能够返回一个零布尔值),但在什么情况下,我想声明一个包装的可选使用? 而不是 ! 为隐式解包可选。 这似乎没有必要宣布? 然后input! 到处都是,而不仅仅是使用! 一旦。 我不想忽视? 作为无用的,但我只是无法find它的用途…任何想法?

创build一个可选块作为variables

我有一个简单的类,我声明一个块作为一个variables: class MyObject : NSObject { var progressBlock:(progress:Double) -> ()? init() { } } 据我所知,如果这样定义, progressBlock不必在init()初始化器中初始化 但是,当我尝试编译时,我得到他的错误: Property 'self.progressBlock' not initialized at super.init 所以问题是,我如何创build一个可选的progressBlock ,所以我没有得到这个错误?

Swift if语句 – 用逗号分隔多个条件?

看一个Swift的例子 : if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal { … } 该文件指出: …代码将该视图控制器分配给本地常量sourceViewController,并检查sourceViewController上的用餐属性是否为零。 问题:Swift是否让你在用逗号隔开的if语句中有多个条件(如本例中的MealViewController之后的逗号)? 在文档中没有看到这个。