2015-09-05 57 views
0

我在嘗試從字典中更新核心數據對象。字典可能不包含該值,因此我需要根據字典中存在的條件來賦值。下面的代碼工作,但似乎太長。有沒有辦法使條件分配更緊湊?swift中有條件分配託管對象變量的快捷方式

@NSManaged var title: String 
... 
func updateFromDict(dict :[String :String]){ 
    if dict["title"] != nil { 
     self.title = dict["title"]! 
    } 
} 
+0

如果你想更新詞典中的所有鍵,你可以使用setValuesForKeysWithDictionary。 – Willeke

回答

1

不是檢查nil中,斯威夫特-Y方法是使用可選結合

if let title = dict["title"] { 
    self.title = title 
} 

這是不是真的任何短。

不能進行分配可選的,但你可以使用零合併運算??解開的價值,只是分配self.title本身如果dict["title"]nil

self.title = dict["title"] ?? self.title 

如果你想要看中,你可以定義你自己的運營商=?,如果右側不是nil

infix operator =? {} 

func =?<T> (inout lhs: T, rhs: T?) { 
    if let value = rhs { 
     lhs = value 
    } 
} 

用法:

self.title =? dict["title"] 
0

你可以通過做這個作爲一個班輪內置map()功能 爲選配:

// Swift 1.2: 
map(dict["title"]) { self.title = $0 } 

// Swift 2.0: 
dict["title"].map { self.title = $0 } 

如果dict["title"]不是隻執行的閉合nil,然後 $0是展開的值。