2017-07-07 35 views
1

我想檢查當我保存一個對象到我的解析服務器,如果出現問題。但我有兩個選擇,我有三個選項,我不知道它們的區別。我有這三個選項(如果error == nil,或者如果object!= nil,或者如果error == nil和object!= nil)。我應該使用哪一個。由於如果錯誤==零解析swift

選項#1

let user = PFUser.current()! 
user.saveInBackground (block: { (success:Bool, error:Error?) -> Void in 
    if error == nil{ 
    } 
)} 

選項#2

let user = PFUser.current()! 
user.saveInBackground (block: { (success:Bool, error:Error?) -> Void in 
    if object != nil{ 
    } 
)} 

選項#3

let user = PFUser.current()! 
user.saveInBackground (block: { (success:Bool, error:Error?) -> Void in 
    if error == nil && object != nil{ 
    } 
)} 
+0

提示:'(塊:'可以去除(與實際上應最後括號)一起,如可以在' - > Void'被移除,並且該類型的註釋爲封參數 – idmean

回答

0

我建議並鼓勵你使用guard語句,的情況。

//Always safely unwrap optional value: 
    if let user = PFUser.current(){ 

    user.saveInBackground (block: { (success:Bool, error:Error?) -> Void in 

     guard success, error == nil else { 
     //handle error somehow...(print or whatever...) 
     return 
     } 
     //Continue here as everything is fine... 

    )} 
} 
+0

可以我問你一些事情,如果我在塊內部(對象,錯誤),我仍然可以使用上面的守衛解決方案,請讓我知道,這樣我就可以在上面的解決方案中添加一個複選標記 – ahmed

+0

如果對象是可選的,你可以用後衛解開它太像這樣: 'user.saveInBackground(塊:{(成功:AnyObject?錯誤:錯誤) - >虛空中 後衛讓對象=對象,錯誤==無其他{// 處理錯誤莫名其妙...(打印或任何...) 回報 } 打印(對象) //對象現在是解開這樣做你要。 //繼續在這裏,因爲一切都很好... )} ' –

+0

對不起,Markdown似乎在評論中被打破..只是複製粘貼代碼從回答,並使縮進/空格 –

0

最好使用不同的處理程序成功和失敗的:

func saveInBackground(success:() -> Void, failure: (Error?) -> Void) { 
    /* do whatever you need */ 
    if saved { 
     success() 
    } else { 
     failure(saveError) 
    } 
} 

saveInBackground(success: { 
    /* saving was succeed */ 
}, failure: { (error) in 
    /* saving was failed */ 
}) 
0

當保存操作成功時,不應該出現錯誤,作爲一般經驗法則,它取決於您的實施的下一步。沒有一種方法是無效的,我仍然建議你檢查'開心價值',對象,成功dtc ...在檢查錯誤之前