gpt4 book ai didi

swift - 如何将 objc NSDictionary 转换为 Swift

转载 作者:行者123 更新时间:2023-11-30 14:14:46 27 4
gpt4 key购买 nike

如何修复此错误:

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]; }

最佳答案

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
}

关于swift - 如何将 objc NSDictionary 转换为 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com