2016-06-09 63 views
0

如果是可選或強制更新,我需要創建某種閉包來返回。我已經創造了一些僞代碼:如何創建一個閉包來返回哪一個參數爲真?

func verifyAppVersionWithServer(isForceUpdate: bool -> true, isOptionalUpdate: bool -> true) { 
    //Some check will be performed here then: 
    if isForceUpdate { 
     return isForceUpdate -> true 
    } else { 
     return isOptionalUpdate -> true 
    }  
} 

我不知道如何創建一個斯威夫特關閉然後將返回的參數是真實的。

回答

1

這可能是更好的返回一個enum表示更新所需要的類型。

你會再有這樣的事情:

enum UpdateType { 
    case None 
    case Optional 
    case Required 
} 

func verifyAppVersionWithServer(completion:(UpdateType) -> Void) { 

    let anyUpdate = true 
    let forcedUpdate = false 

    if anyUpdate { 
     if forcedUpdate { 
      completion(.Required) 
     } else { 
      completion(.Optional) 
     } 
    } else { 
     completion(.None) 
    } 
} 

你會稱其爲:

verifyAppVersionWithServer { (updateType) in 
    print("Update type is \(updateType)") 
} 

顯然,值將通過您的服務器響應來決定,而不是固定的值,因爲我已經證明。

+0

感謝您的回答。我實現了這個功能,但在試圖調用它時聲明編譯器錯誤,指出由於分段錯誤11導致'Command失敗。你知道這是爲什麼嗎? – kevinabraham

+0

我不確定沒有關於您如何呼叫以及哪條線路導致異常的附加信息。我的代碼在一個操場上工作。 – Paulw11

+0

你的代碼工作。我的錯誤在於結束。嘗試使用'func'調用'class func',這會導致它失敗。非常感謝! – kevinabraham

0

您可以使用類似下面

func verifyAppVersionWithServer(parm1: String, withParma2: Bool, completionHandeler: (isSucess: Bool, error : NSError) -> Void) { 

    //Write your logic 

    //call complition handeler 
    completionHandeler(isSucess: true, error: error) 
} 

希望這將有助於

相關問題