带有多个对象和键的NSDictionary init

Nat*_*Mio 3 objective-c ios swift

我最近一直试图弄清楚如何在swift中初始化一个字典,就像我以前在Objective-c中做的那样:

NSMutableDictionary *loginDictionary = [[NSMutableDictionary alloc] initWithObjects:@[UsernameTextfield.text,PasswordTextfield.text] forKeys:@[@"username",@"password"];
Run Code Online (Sandbox Code Playgroud)

我试着在Swift中写它:

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

但我得到一个错误:

上下文类型AnyObject不能与数组文字一起使用.

aya*_*aio 6

首先,您必须使用相同的方法,并使用objectsforKeys(注意复数).

然后你需要告诉编译器每个对象的类型,在你的情况下它是来自Optional文本标签的字符串,所以你可以这样做:

if let name = usernameTextField.text as? String, let pass = passwordTextField.text as? String {
    let userDictionary = NSMutableDictionary(objects: [name, pass], forKeys: ["username", "password"])
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以(并且应该)使用`let`声明NSMutableDictionary,因为它是*引用类型*... (3认同)