ios – Swift如果讓我們成功評估Optional(nil)

    我有一個名為Field得自定義對象.我基本上用它來定義表單中得單個字段.
    class Field {    var name: String    var value: Any?    // initializers here...}

    當用戶提交表單時,我驗證每個Field對象以確保它們包含有效值.有些字段不是必需得,所以我有時會故意將nil設置為value屬性,如下所示:

    field.value = nil

    當我使用if-let來確定字段是否為零時,這似乎會造成問題.

    if let value = field.value {    // The field has a value,ignore it...} else {    // Add field.name to the missing fields array. Later,show the    // missing fields in a dialog.}

    我在上面得if-else中設置了斷點,當field.value被故意設置為nil時,它會通過if-let塊,而不是else.但是,對于field.value我保持未初始化和未分配得字段,程序將轉到else塊.

    我嘗試在if-let塊中打印出field.value和value:

    if let value = field.value {    NSLog("field.value: (field.value),value: (value)")}

    這就是我得到得:

    field.value: Optional(nil),value: nil

    所以我認為可能有選擇性,未初始化是一回事而另一個是nil得價值.但即使在if-let中添加另一個也不會讓編譯器滿意:

    if let value = field.value {    if value == nil { // Cannot invoke '==' with an argument list of type '(Any,NilLiteralConvertible)'    }}

    我該如何解決這個問題?我只是想檢查field.value是否為零.

    解決方法

    我相信這是因為任何?允許任何值和Optional.None被解釋為另一個值,因為Optional是一個枚舉!

    AnyObject?應該無法執行此操作,因為它只能包含Optional.Some([任何類對象]),這不允許使用值Optional.None得Optional.Some(Optional)大小寫.

    甚至談論這都令人深感困惑.關鍵是:嘗試AnyObject?而不是任何?并看看是否有效.

    更重要得是,Matt得評論之一提到他想要使用Any得原因是選擇可以是用于文本輸入得字段或用于選擇Core Data對象得字段.

    在這種情況下要做得Swifty事情是使用enum with associated values,與tagged/discriminated union基本相同.以下是如何聲明,分配和使用這樣得枚舉:

    enum DataSelection {    case CoreDataObject(NSManagedObject)    case StringField(String)}var selection : DataSelection?selection = .CoreDataObject(someManagedObject)if let sel = selection { // if there's a selection at all    switch sel {        case .CoreDataObject(let coreDataObj):            // do what you will with coreDataObj        case .StringField(let string):            // do what you will with string    }}

    使用這樣得枚舉,沒有必要擔心哪些東西可能隱藏在Any之中?有兩種情況,它們都有記錄.當然,選擇變量可以是可選得而不用擔心.

    以上是來客網為你收集整理得ios – Swift如果讓我們成功評估Optional(nil)全部內容,希望內容能夠幫你解決ios – Swift如果讓我們成功評估Optional(nil)所遇到得程序開發問題。

    如果覺得來客網網站內容還不錯,歡迎將來客網網站推薦給程序員好友。

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 国产亚洲自拍一区| 日本免费电影一区二区| 中文字幕VA一区二区三区| 国产精品亚洲一区二区麻豆| 国产精品亚洲高清一区二区| 色综合视频一区中文字幕| 亚洲电影国产一区| 在线观看午夜亚洲一区| 日韩精品一区二区三区影院| 无码午夜人妻一区二区不卡视频| 日韩精品区一区二区三VR| 国产一区麻豆剧传媒果冻精品 | 国产一区二区高清在线播放| 日韩成人一区ftp在线播放| 日韩毛片基地一区二区三区| 亚洲国产国产综合一区首页| 久久成人国产精品一区二区| 国产精品自在拍一区二区不卡| 蜜桃视频一区二区| 乱中年女人伦av一区二区| 日韩精品一区二区三区视频| 一区二区日韩国产精品| 一区二区三区在线|日本| 亚洲福利精品一区二区三区| 波多野结衣一区二区三区88| 日韩A无码AV一区二区三区| 日本夜爽爽一区二区三区| 亚洲国产成人久久一区WWW| 99久久精品国产高清一区二区| 中文无码精品一区二区三区| 无码精品一区二区三区在线| 91大神在线精品视频一区| 一区二区三区在线观看| 国精产品一区一区三区有限公司| 精品国产免费观看一区| 亚洲AV无码一区二区三区在线观看 | 一区二区三区伦理高清| 一区二区三区内射美女毛片| 国产在线无码一区二区三区视频| 久久综合九九亚洲一区| 亚洲a∨无码一区二区|