Swift函数调用列表不正确的参数类型

问题描述:

我定义了下面的列表swift类,并尝试从viewcontroller调用sfAuthenticateUser。但Xcode智能感知列出了除我定义的类型之外的错误参数类型。Swift函数调用列表不正确的参数类型

错误:无法将类型的值 '串' 预期参数类型 'APISFAuthentication'

的Xcode 7.1版本(7B91b)

// - 视图 - 控制器方法调用如下

@IBAction func ActionNext(sender: AnyObject) { 
    let sss = APISFAuthentication.sfAuthenticateUser(<#T##APISFAuthentication#>) 
} 

//类定义如下

class APISFAuthentication { 
    init(x: Float, y: Float) {    
    } 

    func sfAuthenticateUser(userEmail: String) -> Bool { 
     let manager = AFHTTPRequestOperationManager() 
     let postData = ["grant_type":"password","client_id":APISessionInfo.SF_CLIENT_ID,"client_secret":APISessionInfo.SF_CLIENT_SECRET,"username":APISessionInfo.SF_GUEST_USER,"password":APISessionInfo.SF_GUEST_USER_PASSWORD] 

     manager.POST(APISessionInfo.SF_APP_URL, 
      parameters: postData, 
      success: { (operation, responseObject) in 
       print("JSON: " + responseObject.description) 
      }, 
      failure: { (operation, error) in 
       print("Error: " + error.localizedDescription) 

     }) 
     return true; 
    } 
} 

请参阅t o屏幕截图 enter image description here

问题是您尝试调用实例函数而没有实际实例。

你要么必须创建一个实例,并调用该方法在该实例:

let instance = APISFAuthentication(...) 
instance. sfAuthenticateUser(...) 

或定义函数作为一类功能:

class func sfAuthenticateUser(userEmail: String) -> Bool { 
    ... 
} 

说明:

Xcode为您提供了什么以及让您感到困惑的是,该类提供了通过pa获得对其某些实例函数的引用的功能ssing一个实例吧:

class ABC { 
    func bla() -> String { 
     return "" 
    } 
} 

let instance = ABC() 
let k = ABC.bla(instance) // k is of type() -> String 

k现在功能bla。您现在可以通过k()致电k等。