我希望創造一個字典,將有如何創建具有字符串和功能的鍵值對的字典迅速
let urlDict:[String:Func] = ["LOGIN":getLoginURL(), "RESET":getResetPasswordURL()]
func getLoginURL() -> String{
if (sandbox == true){
return sb_login_url
}else{
return live_login_url
}
}
func getResetPasswordURL() -> String{
if (sandbox == true){
return sb_reset_url
}else{
return live_reset_url
}
}
本字典的目的是爲了得到一個基於KEY
/地圖功能並根據KEY
必須調用相應的函數,然後返回返回的URL。
我試圖命名的字典,但我無法做到這一點
let urlDict:[String:Func] = ["LOGIN":getLoginURL(), "RESET":getResetPasswordURL()]
let urlDict:[String:Function] = ["LOGIN":getLoginURL(), "RESET":getResetPasswordURL()]
let urlDict:[String:Functions] = ["LOGIN":getLoginURL(), "RESET":getResetPasswordURL()]
編輯1
class Constants{
private let sb_login_url = "http://IP_ADDRESS_COM/login_with_credentials"
private let live_login_url = "http://google.com"
private let sb_reset_url = "http://IP_ADDRESS_COM/forgot_password"
private let live_reset_url = "http://google.com"
func getLoginURL() -> String{
if (sandbox == true){
return sb_login_url
}else{
return live_login_url
}
}
func getResetPasswordURL() -> String{
if (sandbox == true){
return sb_reset_url
}else{
return live_reset_url
}
}
` let urlDict: [String:() -> String] = ["LOGIN": Constants.getLoginURL(), "RESET":Constants.getResetPasswordURL()]
if let getFunc = urlDict[url_key] {
let url = (getFunc()) // foo}
}
謝謝你的答覆。 該代碼工作的操場,但在項目中,它給我'不能將類型'(常量) - >() - >字符串'的值轉換爲期望的字典值類型'() - > String''錯誤。 'Constants'是類的名稱。請幫助 – onkar
@onkar從您的評論看來,這些函數似乎是_instance_類的函數'Constants'。這意味着你需要以'anInstanceOfConstants.getLoginURL'('Constants()。getLoginURL')的形式提供給'urlDict',而不是以'Constants.getLoginURL'的形式。後者將工作,如果功能'靜態'。由於你的類的名字是「常量」,我猜測這些函數可能是靜態的。 – dfri
請檢查編輯 – onkar