2015-11-17 27 views
3

最近我一直在试图找出如何初始化一个字典中迅速不像我以前在Objective-C的事情:的NSDictionary初始化与多个对象和键

NSMutableDictionary *loginDictionary = [[NSMutableDictionary alloc] initWithObjects:@[UsernameTextfield.text,PasswordTextfield.text] forKeys:@[@"username",@"password"]; 

我试图把它写在斯威夫特:

let userDictionary = NSMutableDictionary.init(object: [usernameTextField.text,passwordTextField.text], forKey: ["username","password"]) 

,但我得到一个错误:

Contextual type AnyObject cannot be used with array literal.

回答

6

首先,你必须用同样的方法,用objectsforKeys(注意复数)。

然后,你需要告诉编译是每一个对象,你的情况从可选的文本标签,它的字符串,所以你可以做这样的事情:

if let name = usernameTextField.text as? String, let pass = passwordTextField.text as? String { 
    let userDictionary = NSMutableDictionary(objects: [name, pass], forKeys: ["username", "password"]) 
} 
+3

你可以(也应该)与'let'申报的NSMutableDictionary,因为它是一个*引用类型* ... –

+0

@MartinR谢谢,我已经解决了我的答案。 – Moritz

0

你逝去的ObjectsKeys在下面的NSMutableDictionary中,如下所示替换您的代码。

let userDictionary = NSMutableDictionary(objects: [usernameTextField.text,passwordTextField.text], forKeys: ["username","password"])