最近我将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"
];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中txtEmail.text
,txtPassword.text
是我的文本字段,并在运行时填充tha值.
这段代码在旧版本的swift中正常工作,但在更新到swift 2.0后,它给了我一个像下面的错误
Cannot convert value of type '[String : String?]' to specified type 'NSMutableDictionary?'
Run Code Online (Sandbox Code Playgroud)
有什么问题请指导我.
Duc*_*cky 19
只需打开Xcode 7中的类NSMutableDictionary
或NSDictionary
接口,您就可以轻松地看到底层类型实际上是[NSObject: AnyObject]
.这意味着价值不可能nil
.
展开文本值,txtEmail.text!
或者txtPassword.text!
看起来不错,可以帮助您摆脱编译错误,但这是一个糟糕的选择,因为技术上text
属性UITextField
是可选的,在这种情况下您的应用程序可能会崩溃!
这样做是为了您的安全:
let dictParams: NSMutableDictionary? = ["test" : "test",
"username" : txtEmail.text ?? "", // Always use optional values carefully!
"password" : txtPassword.text ?? "",
"version" : "1.0",
"appId" : "1",
"deviceId" : "fasdfasdfrqwe2345sdgdfe56gsdfgsdfg"
]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果使用不重要NSMutableDictionary
,请考虑使用Swift字典,如下所示:
var mutableDictionary = [String: AnyObject]
// OR this if the value can be nil
var mutableDictionary = [String: AnyObject?]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18836 次 |
最近记录: |