我最近试图弄清楚如何在swift中初始化一个字典,就像我以前在Objective-c中所做的那样:
NSMutableDictionary *loginDictionary = [[NSMutableDictionary alloc] initWithObjects:@[UsernameTextfield.text,PasswordTextfield.text] forKeys:@[@"username",@"password"];
我试着用Swift编写它:
let userDictionary = NSMutableDictionary.init(object: [usernameTextField.text,passwordTextField.text], forKey: ["username","password"])
但是我收到了一个错误:
上下文类型AnyObject不能与数组文字一起使用。
答案 0 :(得分:6)
首先,您必须使用相同的方法,objects
和forKeys
(请注意复数形式)。
然后你需要告诉编译器 type 是每个对象,在你的情况下它是来自Optional文本标签的字符串,所以你可以这样做:
if let name = usernameTextField.text as? String, let pass = passwordTextField.text as? String {
let userDictionary = NSMutableDictionary(objects: [name, pass], forKeys: ["username", "password"])
}
答案 1 :(得分:0)
您正在Objects
中传递Keys
和NSMutableDictionary
,如下所示,请将代码替换为以下内容。
let userDictionary = NSMutableDictionary(objects: [usernameTextField.text,passwordTextField.text], forKeys: ["username","password"])