2015-07-10 91 views
0

如何解决这个错误如何将这个objc转换为SWIFT

func loginMobilephone(phone : String , password : String , withBlock block : ((result:NSDictionary , error: NSError)-> Void)!) 
    { 

     var params : AnyObject! = ["username" :phone,"passwd": password, "session_id" : Constant.instance().session] 

     var path : String! = "/account/common/login"; 
     NetworkManager.sharedClient().postPath(path, parameters: params, withBlock: block) 
     NetworkManager.sharedClient().postPath(<#path: String!#>, parameters: <#[NSObject : AnyObject]!#>, withBlock: <#(([NSObject : AnyObject]!, NSError!) -> Void)!##([NSObject : AnyObject]!, NSError!) -> Void#>) 



    } 

错误是:

Cannot invoke 'postPath' with an argument list of type '(String!, parameters: AnyObject!, withBlock: ((result: NSDictionary, error: NSError) -> Void)!)'

或如何将其转换为SWIFT

+(void)loginMobilephone:(NSString *)phone password:(NSString *)password withBlock:(void (^)(NSDictionary *, NSError *))block{ 
    NSDictionary *params = @{@"username" : phone, 
          @"passwd" : password, 
          @"session_id":[[Constant instance] session] 
          }; 
    [[NetworkManager sharedClient] postPath:APIUSERLOGIN parameters:params withBlock:block]; } 

回答

0

PARAMS应该是一个字典[NSObject:AnyObject]而不是AnyObject !.

尝试这样的:

let params: [NSObject : AnyObject] = ["username" : phone, "passwd" : password, "session_id" : Constant.instance().session] 

并更改方法参数,这

func loginMobilephone(phone: String, password: String, withBlock block: ((result: [NSObject : AnyObject] , error: NSError)-> Void)) { 
    // ... code 
}