gpt4 book ai didi

swift - 如何在 swift 2.0 中创建 NSMutableDictionary

转载 作者:IT王子 更新时间:2023-10-29 05:29:39 27 4
gpt4 key购买 nike

最近我将 Xcode 更新到 7,它包含 swift 2.0 编译器。在此之前,我用旧版本的 swift 制作了我的项目。在那个版本中,我创建了如下所示的 NSMutableDictionary

    let dictParams:NSMutableDictionary? = ["test" : "test", 
"username" : txtEmail.text,
"password" : txtPassword.text,
"version" : "1.0",
"appId" : "1",
"deviceId" : "fasdfasdfrqwe2345sdgdfe56gsdfgsdfg"
];

在上面的代码中,txtEmail.texttxtPassword.text 是我的文本字段,并在运行时填写值。

此代码在旧版本的 swift 中正常工作,但在更新到 swift 2.0 后,它给我一个如下所示的错误

Cannot convert value of type '[String : String?]' to specified type 'NSMutableDictionary?'

它有什么问题,请指导我。

最佳答案

只需打开 Xcode 7 中的 NSMutableDictionaryNSDictionary 类接口(interface),您就可以很容易地看到底层类型实际上是 [NSObject: AnyObject]。这意味着该值不能为 nil

txtEmail.text!txtPassword.text! 这样的文本值可能看起来不错,可以帮助你摆脱编译错误,但这是一个糟糕的选择,因为从技术上讲,UITextFieldtext 属性是可选的,在这种情况下您的应用可能会崩溃!

为了您的安全,请这样做:

let dictParams: NSMutableDictionary? = ["test" : "test", 
"username" : txtEmail.text ?? "", // Always use optional values carefully!
"password" : txtPassword.text ?? "",
"version" : "1.0",
"appId" : "1",
"deviceId" : "fasdfasdfrqwe2345sdgdfe56gsdfgsdfg"
]

顺便说一下,如果使用 NSMutableDictionary 不是关键,请考虑像这样使用 Swift 字典:

var mutableDictionary = [String: AnyObject] 

// OR this if the value can be nil
var mutableDictionary = [String: AnyObject?]

关于swift - 如何在 swift 2.0 中创建 NSMutableDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com