2015-11-17 57 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"])