NSDictionary init包含多个对象和键

时间:2015-11-17 10:42:47

标签: ios objective-c swift

我最近试图弄清楚如何在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不能与数组文字一起使用。

2 个答案:

答案 0 :(得分:6)

首先,您必须使用相同的方法,objectsforKeys(请注意复数形式)。

然后你需要告诉编译器 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中传递KeysNSMutableDictionary,如下所示,请将代码替换为以下内容。

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