hun*_*erp 9 iphone xcode ios swift
错误:
不能下标'[NSObject:AnyObject]类型的值吗?索引类型为'String'
码:
func getApple(appleId: String) {
var apples = userDefaults.dictionaryForKey("apples_array")
println(apples[appleId])
Run Code Online (Sandbox Code Playgroud)
Log*_*gan 13
应该:
var apples = userDefaults.dictionaryForKey("apples_array")
println(apples?[appleId])
Run Code Online (Sandbox Code Playgroud)
这里的问题是类型[NSObject : AnyObject]?意味着一个可选类型,这意味着你试图调用一个基本上是enum的下标.当你尝试这样做时,没有声明下标,所以系统会窒息.
通过添加?我们所说的,如果可能,解包该值,然后调用下标.通过这种方式,系统可以查看[NSObject : AnyObject]下标声明的类型,一切正常.
您也可以使用!强制解包,但如果apples为零则会崩溃.另一种可能的方法是:
let apples = userDefaults.dictionaryForKey("apples_array") ?? [:]
println(apples[appleId])
Run Code Online (Sandbox Code Playgroud)
这样,apples不再是可选的,它将始终具有下标语法.没有打包必要.
| 归档时间: |
|
| 查看次数: |
13166 次 |
| 最近记录: |