错误无法下标“AnyObject?”类型的值在 NSTimer 的 userInfo 中使用数组

Posted

技术标签:

【中文标题】错误无法下标“AnyObject?”类型的值在 NSTimer 的 userInfo 中使用数组【英文标题】:Error Cannot subscript a value of type 'AnyObject?' with Array in userInfo of a NSTimer 【发布时间】:2015-10-18 23:35:36 【问题描述】:

你好,这是我的代码:

我不明白为什么我会出现这个错误......任何人都可以帮助我吗?

【问题讨论】:

【参考方案1】:

userInfoAnyObject。你不能下标AnyObject

listAlienBullet 转换为 SKSpriteNodes 的 Array

if let listAlienBullet = timer.userInfo as? [SKSpriteNode] 
    let alienForDestroying = listAlienBullet[0]
    let bulletForDestroying = listAlienBullet[1]

【讨论】:

当我尝试这个时,我有另一个错误:键入'Dictionary?'不符合协议'Hashable' 对不起旧习惯。将 Dictionary 更改为 [String:AnyObject] 相同的东西,但是您必须告诉编译器字典应该包含什么。键入安全性等等。【参考方案2】:

您将SKSpriteNode 的数组放入计时器的userInfo。 当计时器触发时,被调用的方法返回userInfo 作为AnyObject。 只需将对象向下转换为正确的类型即可。

let listAlienBullet = timer.userInfo as! [SKSpriteNode] 
let alienForDestroying = listAlienBullet[0]
let bulletForDestroying = listAlienBullet[1]

【讨论】:

以上是关于错误无法下标“AnyObject?”类型的值在 NSTimer 的 userInfo 中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

无法使用“String”类型的索引为“[String : AnyObject]”类型的值下标

带有 AnyObject 下标的 Realm.io

swift: 不能用字符串类型的索引下标 [Dictionary<String, AnyObject>] 类型的值

Swift错误无法转换类型'(AFHTTPRequestOperation?,AnyObject?)->()的值

Swift 2:“Set<UITouch>”类型的值没有成员“anyObject”[重复]

尝试保存数组,出现错误 - 无法将类型“[Data]”的值转换为预期的参数类型“[Dictionary<String, AnyObject>]”