ios - 具有多个对象和键的 NSDictionary init

标签 ios objective-c 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"])

但是我得到一个错误:

Contextual type AnyObject cannot be used with array literal.

最佳答案

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

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

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

关于ios - 具有多个对象和键的 NSDictionary init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754892/

相关文章:

ios - dequeueReusableCellWithIdentifier 是强制性的以避免内存泄漏吗?

ios - 如何让每个 tableView 行的 UIButton 状态不同?

ios - 淡入/淡出 UILabel

ios - 如何点击 UITableViewCell 中的 UIButton 并转换到新的 View Controller ,并向其传递信息?

swift - 在 Swift 中定义 [tab] 键按下的顺序

ios - UIView动画问题

ios - 从 UIBezierPath 圆角矩形后面裁剪锐边

ios - AVFoundation人脸检测框架

iOS Swift - 像Skype一样的底部菜单

swift - 如何在 Swift 中初始化 AVAudioPlayer